view release on metacpan or search on metacpan
lib/At/Protocol/DID.pm view on Meta::CPAN
#~ - always starts "did:" (lower-case)
#~ - method name is one or more lower-case letters, followed by ":"
#~ - remaining identifier can have any of the above chars, but can not end in ":"
#~ - it seems that a bunch of ":" can be included, and don't need spaces between
#~ - "%" is used only for "percent encoding" and must be followed by two hex characters (and thus can't end in "%")
#~ - query ("?") and fragment ("#") stuff is defined for "DID URIs", but not as part of identifier itself
#~ - "The current specification does not take a position on the maximum length of a DID"
#~ - in current atproto, only allowing did:plc and did:web. But not *forcing* this at lexicon layer
#~ - hard length limit of 8KBytes
#~ - not going to validate "percent encoding" here
sub ensureValidDid ($did) {
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Atomic/Pipe.pm view on Meta::CPAN
=head2 Performance
Compression is not just a wire-size optimization for C<Atomic::Pipe>: when
messages exceed C<PIPE_BUF> (typically 4096 bytes on Linux) the writer must
fragment them into multiple non-atomic chunks, and the reader must reassemble
them. Compressing the payload first frequently collapses a multi-part message
back into a single atomic burst, which avoids that per-message protocol
overhead entirely. As a result, on workloads dominated by larger-than-PIPE_BUF
messages, compression is often B<much faster end-to-end than no compression>,
even after accounting for the CPU cost of compress/decompress.
The kernel pipe buffer size (see L</resize>) does B<not> affect this --
fragmentation is keyed on the POSIX C<PIPE_BUF> atomic-write threshold, not on
the buffer capacity.
=head3 Benchmark: streaming JSON objects
Numbers below are from C<bench/zstd_compression.pl> in the distribution. The
lib/Atomic/Pipe.pm view on Meta::CPAN
=item Larger JSON (100 MB total, 20407 objects)
Object sizes 187 .. 10000 bytes, average ~5.1 KB, evenly distributed across
the 1..10 KB range. Most objects exceed C<PIPE_BUF>, so the uncompressed path
pays the multi-part fragmentation cost on nearly every message.
level raw MB/s wire MB ratio saved
plain 0.29 100.00 - -
L-3 287.85 35.61 2.81x 64.4%
L-1 273.56 33.92 2.95x 66.1%
lib/Atomic/Pipe.pm view on Meta::CPAN
L18 7.81 28.14 3.55x 71.9%
L22 7.85 28.14 3.55x 71.9%
Here the uncompressed run collapses to ~0.29 MB/s, while even modest
compression levels achieve 200+ MB/s -- a ~1000x throughput improvement
driven almost entirely by avoided fragmentation. Levels above ~5 trade
significant CPU for negligible additional ratio.
=item Pipe buffer size has minimal impact
The same 100 MB corpus, holding mode constant and varying the kernel pipe
view all matches for this distribution
view release on metacpan or search on metacpan
lib/AtteanX/Parser/RDFXML.pm view on Meta::CPAN
sub push_base {
my $self = shift;
my $base = shift;
if ($base) {
my $uri = (blessed($base) and $base->isa('URI')) ? $base : URI->new($base->value );
$uri->fragment( undef );
$base = iri( "$uri" );
}
unshift( @{ $self->{base} }, $base );
}
view all matches for this distribution
view release on metacpan or search on metacpan
$mech->delete('/gsp?graph=http%3A%2F%2Fexample.org%2Frdfxml');
$mech->put('/gsp?graph=http%3A%2F%2Fexample.org%2Frdfxml', 'Content-Type' => 'application/rdf+xml', content => <<"END");
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:eg="http://example.org/"
xml:base="http://example.org/dir/file">
<rdf:Description rdf:ID="frag" eg:value="rdf/xml value" />
</rdf:RDF>
END
ok( $mech->success );
$mech->get_ok('/gsp?graph=http%3A%2F%2Fexample.org%2Frdfxml', {Accept => 'application/n-triples', 'Accept-Encoding' => ''});
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Plack/App/AtteanX/Query/Cache.pm view on Meta::CPAN
sub prepare_app {
my $self = shift;
my $config = $self->{config};
my $redisserver = 'robin.kjernsmo.net:6379';
my $sparqlurl = 'http://dbpedia.org/sparql';
my $ldfurl = 'http://fragments.dbpedia.org/2015/en';
my $sparqlstore = Attean->get_store('SPARQL')->new(endpoint_url => $sparqlurl);
my $ldfstore = Attean->get_store('LDF')->new(start_url => $ldfurl);
my $cache = CHI->new(
driver => 'Redis',
namespace => 'cache',
view all matches for this distribution
view release on metacpan or search on metacpan
demo/test.pl view on Meta::CPAN
use v5.14;
use Attean;
use Attean::RDF qw(iri blank literal);
use AtteanX::Store::LDF;
my $uri = 'http://fragments.dbpedia.org/2014/en';
my $store = Attean->get_store('LDF')->new(start_url => $uri);
my $num = $store->count_triples(iri('http://example.org/UNEXPECTED'));
warn "num: $num";
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Spiffy.pm view on Meta::CPAN
? '{}'
: default_as_code($default);
my $code = $code{sub_start};
if ($args->{-init}) {
my $fragment = $args->{-weak} ? $code{weak_init} : $code{init};
$code .= sprintf $fragment, $field, $args->{-init}, ($field) x 4;
}
$code .= sprintf $code{set_default}, $field, $default_string, $field
if defined $default;
$code .= sprintf $code{return_if_get}, $field;
$code .= sprintf $code{set}, $field;
view all matches for this distribution
view release on metacpan or search on metacpan
libsamplerate/M4/libtool.m4 view on Meta::CPAN
_LT_DECL([], [postuninstall_cmds], [2],
[Command to use after uninstallation of a shared archive])
_LT_DECL([], [finish_cmds], [2],
[Commands used to finish a libtool library installation in a directory])
_LT_DECL([], [finish_eval], [1],
[[As "finish_cmds", except a single script fragment to be evaled but
not shown]])
_LT_DECL([], [hardcode_into_libs], [0],
[Whether we should hardcode library paths into libraries])
_LT_DECL([], [sys_lib_search_path_spec], [2],
[Compile-time system search path for libraries])
libsamplerate/M4/libtool.m4 view on Meta::CPAN
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
# Instead, shared libraries are loaded at an image base (0x10000000 by
# default) and relocated if they conflict, which is a slow very memory
# consuming and fragmenting process. To avoid this, we pick a random,
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ...
;;
libsamplerate/M4/libtool.m4 view on Meta::CPAN
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
# Instead, shared libraries are loaded at an image base (0x10000000 by
# default) and relocated if they conflict, which is a slow very memory
# consuming and fragmenting process. To avoid this, we pick a random,
# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
# time. Moving up from 0x10000000 also allows more sbrk(2) space.
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RAN...
;;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Audio/M4P/QuickTime.pm view on Meta::CPAN
}
foreach my $tfhd (@tfhd_atoms) {
my ( $tf_flags, undef, $offset_high32, $offset_low32 ) =
unpack( 'NNNN', substr( $self->{buffer}, $tfhd->start + 8, 16 ) );
# we only need to adjust if the 1st movie fragment tf_flags bit is set
next unless ( ( $tf_flags % 2 ) == 1 );
my $offset64 = ( $offset_high32 * ( 2**32 ) ) + $offset_low32;
next if $offset64 < $change_position;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Audio/Mad/Util.pm view on Meta::CPAN
## to fill the buffer.
if (
$stream->error == MAD_ERROR_BUFLEN ||
$stream->error == MAD_ERROR_BUFPTR
) {
## this is to capture the frame fragment at
## the end of the buffer, if we don't do this
## we lose the frame.
$buf = substr($buf, $stream->next_frame);
## attempt to read more data onto the end of
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Audio/Nama/ChainSetup.pm view on Meta::CPAN
# track7-soundcard_out as aux_send will have chain id S7
# that will be transferred by expand_graph() to
# the new edge, loop-soundcard-out
# we will issue two IO objects, one for the chain input
# fragment, one for the chain output
my $edge = shift;
logpkg(__FILE__,__LINE__,'debug',"non-track IO dispatch:",join ' -> ',@$edge);
my $eattr = $g->get_edge_attributes(@$edge) // {};
view all matches for this distribution
view release on metacpan or search on metacpan
mic cd mix pcm2 rec igain ogain line1 line2
line3 dig1 dig2 dig3 phin phout video radio monitor
);
# Use push, because BEGIN blocks may frob these
push @EXPORT_OK, qw(dsp_sync dsp_reset set_fragment get_fmt
get_outbuf_ptr get_inbuf_ptr
get_outbuf_info get_inbuf_info
mixer_read mixer_write @DevNames);
push @{$EXPORT_TAGS{funcs}},
qw[
dsp_sync
dsp_reset
set_fragment
get_fmt
get_outbuf_ptr
get_inbuf_ptr
get_outbuf_info
get_inbuf_info
my $sfmt = pack "L", AFMT_QUERY;
ioctl $dsp, SNDCTL_DSP_SETFMT, $sfmt or return undef;
return unpack "L", $sfmt;
}
sub set_fragment {
my ($dsp, $shift, $max) = @_;
# This is not really documented, but the code of the sound drivers
# says that this is two halfwords packed together in host byte
# order, the MSW being the shift (assuming this means size log 2),
# the lower being the maximum number. In general it seems that
# shift must be 4 <= shift < 16, maxfrags must be >= 4.
my $sfrag = pack "L", (($max << 16) | $shift);
ioctl $dsp, SNDCTL_DSP_SETFRAGMENT, $sfrag;
}
sub get_outbuf_ptr {
my $dsp = shift;
my $cinfo = pack CINFO_TMPL;
}
my $current_format = set_fmt($dsp, AFMT_QUERY);
my $sps_actual = set_sps($dsp, 16000);
set_fragment($dsp, $fragshift, $nfrags);
my ($frags_avail, $frags_total, $fragsize, $bytes_avail)
= get_outbuf_info($dsp);
my ($bytes, $blocks, $dma_ptr) = get_outbuf_ptr($dsp);
my $mixer = IO::Handle->new("</dev/mixer") or die "open failed: $!";
my $miclevel = mixer_read($mixer, SOUND_MIXER_MIC);
dsp_get_caps
set_sps
set_fmt
set_stereo
get_supported_fmts
set_fragment
get_outbuf_ptr
get_inbuf_ptr
get_outbuf_info
get_inbuf_info
mixer_read_devmask
view all matches for this distribution
view release on metacpan or search on metacpan
mpg123/audio_alsa.c view on Meta::CPAN
fprintf(stderr, "playback info failed: %s\n", snd_strerror(err));
return; /* not fatal error */
}
bzero(&pp, sizeof(pp));
pp.fragment_size = pi.buffer_size/4;
if (pp.fragment_size > pi.max_fragment_size) pp.fragment_size = pi.max_fragment_size;
if (pp.fragment_size < pi.min_fragment_size) pp.fragment_size = pi.min_fragment_size;
pp.fragments_max = -1;
pp.fragments_room = 1;
if((err=snd_pcm_playback_params(ai->handle, &pp)) < 0 )
{
fprintf(stderr, "playback params failed: %s\n", snd_strerror(err));
return; /* not fatal error */
view all matches for this distribution
view release on metacpan or search on metacpan
examples/js/jquery-1.9.1.js view on Meta::CPAN
error: function( msg ) {
throw new Error( msg );
},
// data: string of html
// context (optional): If specified, the fragment will be created in this context, defaults to document
// keepScripts (optional): If true, will include scripts passed in the html string
parseHTML: function( data, context, keepScripts ) {
if ( !data || typeof data !== "string" ) {
return null;
}
examples/js/jquery-1.9.1.js view on Meta::CPAN
}
});
jQuery.support = (function() {
var support, all, a,
input, select, fragment,
opt, eventName, isSupported, i,
div = document.createElement("div");
// Setup
div.setAttribute( "className", "t" );
examples/js/jquery-1.9.1.js view on Meta::CPAN
// #11217 - WebKit loses check when the name is after the checked attribute
input.setAttribute( "checked", "t" );
input.setAttribute( "name", "t" );
fragment = document.createDocumentFragment();
fragment.appendChild( input );
// Check if a disconnected checkbox will retain its checked
// value of true after appended to the DOM (IE6/7)
support.appendChecked = input.checked;
// WebKit doesn't clone checked state correctly in fragments
support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
// Support: IE<9
// Opera does not clone events (and typeof div.attachEvent === undefined).
// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
if ( div.attachEvent ) {
examples/js/jquery-1.9.1.js view on Meta::CPAN
// Null elements to avoid leaks in IE
container = div = tds = marginDiv = null;
});
// Null elements to avoid leaks in IE
all = select = fragment = opt = a = input = null;
return support;
})();
var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
examples/js/jquery-1.9.1.js view on Meta::CPAN
var ret = matches.call( elem, expr );
// IE 9's matchesSelector returns false on disconnected nodes
if ( ret || support.disconnectedMatch ||
// As well, disconnected nodes are said to be in a document
// fragment in IE 9
elem.document && elem.document.nodeType !== 11 ) {
return ret;
}
} catch(e) {}
}
examples/js/jquery-1.9.1.js view on Meta::CPAN
// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
// unless wrapped in a div with non-breaking characters in front of it.
_default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ]
},
safeFragment = createSafeFragment( document ),
fragmentDiv = safeFragment.appendChild( document.createElement("div") );
wrapMap.optgroup = wrapMap.option;
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
wrapMap.th = wrapMap.td;
examples/js/jquery-1.9.1.js view on Meta::CPAN
// Flatten any nested arrays
args = core_concat.apply( [], args );
var first, node, hasScripts,
scripts, doc, fragment,
i = 0,
l = this.length,
set = this,
iNoClone = l - 1,
value = args[0],
isFunction = jQuery.isFunction( value );
// We can't cloneNode fragments that contain checked, in WebKit
if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
return this.each(function( index ) {
var self = set.eq( index );
if ( isFunction ) {
args[0] = value.call( this, index, table ? self.html() : undefined );
examples/js/jquery-1.9.1.js view on Meta::CPAN
self.domManip( args, table, callback );
});
}
if ( l ) {
fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
first = fragment.firstChild;
if ( fragment.childNodes.length === 1 ) {
fragment = first;
}
if ( first ) {
table = table && jQuery.nodeName( first, "tr" );
scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
hasScripts = scripts.length;
// Use the original fragment for the last item instead of the first because it can end up
// being emptied incorrectly in certain situations (#8070).
for ( ; i < l; i++ ) {
node = fragment;
if ( i !== iNoClone ) {
node = jQuery.clone( node, true, true );
// Keep references to cloned scripts for later restoration
examples/js/jquery-1.9.1.js view on Meta::CPAN
}
}
}
// Fix #11809: Avoid leaking memory
fragment = first = null;
}
}
return this;
}
examples/js/jquery-1.9.1.js view on Meta::CPAN
if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
clone = elem.cloneNode( true );
// IE<=8 does not properly clone detached, unknown element nodes
} else {
fragmentDiv.innerHTML = elem.outerHTML;
fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
}
if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
examples/js/jquery-1.9.1.js view on Meta::CPAN
buildFragment: function( elems, context, scripts, selection ) {
var j, elem, contains,
tmp, tag, tbody, wrap,
l = elems.length,
// Ensure a safe fragment
safe = createSafeFragment( context ),
nodes = [],
i = 0;
examples/js/jquery-1.9.1.js view on Meta::CPAN
// Manually add leading whitespace removed by IE
if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
}
// Remove IE's autoinserted <tbody> from table fragments
if ( !jQuery.support.tbody ) {
// String was a <table>, *may* have spurious <tbody>
elem = tag === "table" && !rtbody.test( elem ) ?
tmp.firstChild :
examples/js/jquery-1.9.1.js view on Meta::CPAN
tmp = safe.lastChild;
}
}
}
// Fix #11356: Clear elements from fragment
if ( tmp ) {
safe.removeChild( tmp );
}
// Reset defaultChecked for any radios and checkboxes
examples/js/jquery-1.9.1.js view on Meta::CPAN
continue;
}
contains = jQuery.contains( elem.ownerDocument, elem );
// Append to fragment
tmp = getAll( safe.appendChild( elem ), "script" );
// Preserve script evaluation history
if ( contains ) {
setGlobalEval( tmp );
view all matches for this distribution
view release on metacpan or search on metacpan
public/javascripts/jquery.js view on Meta::CPAN
*/
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"...
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!...
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d...
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j...
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return ...
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.p...
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNod...
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return...
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},...
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(ty...
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady...
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function...
public/javascripts/jquery.js view on Meta::CPAN
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefo...
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType=...
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.repl...
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElement...
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove(...
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.ea...
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"appen...
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined"...
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for...
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.ma...
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a...
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.n...
view all matches for this distribution
view release on metacpan or search on metacpan
inc/Module/AutoInstall.pm view on Meta::CPAN
return 1;
}
sub postamble {
$PostambleUsed = 1;
my $fragment;
$fragment .= <<"AUTO_INSTALL" if !$InstallDepsTarget;
config :: installdeps
\t\$(NOECHO) \$(NOOP)
AUTO_INSTALL
$fragment .= <<"END_MAKE";
checkdeps ::
\t\$(PERL) $0 --checkdeps
installdeps ::
inc/Module/AutoInstall.pm view on Meta::CPAN
listalldeps ::
\t$PostambleActionsListAllDeps
END_MAKE
return $fragment;
}
1;
__END__
view all matches for this distribution
view release on metacpan or search on metacpan
lib/Authen/NZRealMe/ICMSResolutionRequest.pm view on Meta::CPAN
my $parser = XML::LibXML->new();
my $doc = $parser->parse_string($xml);
my $xc = XML::LibXML::XPathContext->new($doc->documentElement);
$xc->registerNs( @$_ ) foreach @all_ns;
my $sig_frag = $parser->parse_string($sig_xml)->documentElement();
$sig_frag->{Id} = 'SIG-4'; # Add Id attr for backwards compatibility
# Generate a cert fingerprint and append to the signature block
my $x509 = Crypt::OpenSSL::X509->new_from_string($signer->pub_cert_text);
my $fingerprint = $x509->fingerprint_sha1() =~ s/://gr;
my $fingerprint_sha1 = encode_base64(pack("H*", $fingerprint), '');
lib/Authen/NZRealMe/ICMSResolutionRequest.pm view on Meta::CPAN
$x->KeyIdentifier( $ns_wsse, { EncodingType => URI('wss_b64'), ValueType => URI('wss_sha1') },
$fingerprint_sha1,
),
),
).'';
my $x509_frag = $parser->parse_string($keyinfo_block)->documentElement();
$sig_frag->appendChild($x509_frag);
# Insert signature block as last element in soap:Header/wsse:Security section
my($sec_node) = $xc->findnodes("/soap:Envelope/soap:Header/wsse:Security");
$sec_node->appendChild($sig_frag);
return $doc->toString(0);
}
1;
view all matches for this distribution
view release on metacpan or search on metacpan
cat >>$CONFIG_STATUS <<\_ACEOF
# Split the substitutions into bite-sized pieces for seds with
# small command number limits, like on Digital OSF/1 and HP-UX.
ac_max_sed_lines=48
ac_sed_frag=1 # Number of current file.
ac_beg=1 # First line for current file.
ac_end=$ac_max_sed_lines # Line after last line for current file.
ac_more_lines=:
ac_sed_cmds=
while $ac_more_lines; do
if test $ac_beg -gt 1; then
sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
else
sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
fi
if test ! -s $tmp/subs.frag; then
ac_more_lines=false
else
# The purpose of the label and of the branching condition is to
# speed up the sed processing (if there are no `@' at all, there
# is no need to browse any of the substitutions).
# These are the two extra sed commands mentioned above.
(echo ':t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
if test -z "$ac_sed_cmds"; then
ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
else
ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
fi
ac_sed_frag=`expr $ac_sed_frag + 1`
ac_beg=$ac_end
ac_end=`expr $ac_end + $ac_max_sed_lines`
fi
done
if test -z "$ac_sed_cmds"; then
view all matches for this distribution
view release on metacpan or search on metacpan
scrypt-1.2.1/config.aux/depcomp view on Meta::CPAN
$ {
s/.*/'"$tab"'/
G
p
}' >> "$depfile"
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
msvc7msys)
# This case exists only to let depend.m4 do its work. It works by
view all matches for this distribution
view release on metacpan or search on metacpan
t/acceptall.t view on Meta::CPAN
is $ppr1, $ppr;
eval { Authen::Passphrase::AcceptAll->from_rfc2307("{CrYpT}............."); };
isnt $@, "";
foreach my $passphrase("", qw(0 1 foo supercalifragilisticexpialidocious)) {
ok $ppr->match($passphrase);
}
is $ppr->passphrase, "";
view all matches for this distribution
view release on metacpan or search on metacpan
smbval/rfcnb-io.c view on Meta::CPAN
int RFCNB_Get_Pkt(struct RFCNB_Con *con, struct RFCNB_Pkt *pkt, int len)
{ int read_len, pkt_len;
char hdr[RFCNB_Pkt_Hdr_Len]; /* Local space for the header */
struct RFCNB_Pkt *pkt_frag;
int more, this_time, offset, frag_len, this_len;
BOOL seen_keep_alive = TRUE;
/* Read that header straight into the buffer */
if (len < RFCNB_Pkt_Hdr_Len) { /* What a bozo */
smbval/rfcnb-io.c view on Meta::CPAN
/* Now copy in the hdr */
memcpy(pkt -> data, hdr, sizeof(hdr));
/* Get the rest of the packet ... first figure out how big our buf is? */
/* And make sure that we handle the fragments properly ... Sure should */
/* use an iovec ... */
if (len < pkt_len) /* Only get as much as we have space for */
more = len - RFCNB_Pkt_Hdr_Len;
else
more = pkt_len;
this_time = 0;
/* We read for each fragment ... */
if (pkt -> len == read_len){ /* If this frag was exact size */
pkt_frag = pkt -> next; /* Stick next lot in next frag */
offset = 0; /* then we start at 0 in next */
}
else {
pkt_frag = pkt; /* Otherwise use rest of this frag */
offset = RFCNB_Pkt_Hdr_Len; /* Otherwise skip the header */
}
frag_len = pkt_frag -> len;
if (more <= frag_len) /* If len left to get less than frag space */
this_len = more; /* Get the rest ... */
else
this_len = frag_len - offset;
while (more > 0) {
if ((this_time = read(con -> fd, (pkt_frag -> data) + offset, this_len)) <= 0) { /* Problems */
if (errno == EINTR) {
RFCNB_errno = RFCNB_Timeout;
smbval/rfcnb-io.c view on Meta::CPAN
return(RFCNBE_Bad);
}
#ifdef RFCNB_DEBUG
fprintf(stderr, "Frag_Len = %i, this_time = %i, this_len = %i, more = %i\n", frag_len,
this_time, this_len, more);
#endif
read_len = read_len + this_time; /* How much have we read ... */
/* Now set up the next part */
if (pkt_frag -> next == NULL) break; /* That's it here */
pkt_frag = pkt_frag -> next;
this_len = pkt_frag -> len;
offset = 0;
more = more - this_time;
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/AxKit/App/TABOO/XSP/Category.pm view on Meta::CPAN
=head1 DESCRIPTION
This XSP taglib provides two tags to retrieve a structured XML
fragment with all information of a single category or all categories
of a certain type.
L<Apache::AxKit::Language::XSP::SimpleTaglib> has been used to write
this taglib.
view all matches for this distribution
view release on metacpan or search on metacpan
}
}
# insert from a SCALAR
sub include_expr {
my ($document, $parent, $frag) = @_;
if ($frag || $frag == 0) {
my $doc = XML::LibXML->new()->parse_string( $frag );
if ($doc) {
my $root = $doc->getDocumentElement();
$root = $document->importNode($root);
$parent->appendChild($root);
}
=head1 DESCRIPTION
The XSP util: taglib seeks to add a short list of basic utility
functions to the eXtesible Server Pages library. It trivializes the
inclusion of external fragments and adds a few other useful bells and
whistles.
=head1 TAG STRUCTURE
Most of of the tags require some sort of "argument" to be passed (e.g.
=head1 TAG REFERENCE
=head2 C<<util:include-file>>
Provides a way to include an XML fragment from a local file into the
current parse tree. Requires a B<name> argument. The path may be relative
or absolute.
=head2 C<<util:include-uri>>
Provides a way to include an XML fragment from a (possibly) remote URI.
Requires an B<href> argument.
=head2 C<<util:get-file-contents>>
Provides a way to include a local file B<as plain text>. Requires a
B<name> argument. The path may be relative or absolute.
=head2 C<<util:include-expr>>
Provides a way to include an XML fragment from a scalar variable. Note
that this tag may B<only> pass the required B<expr> argument as a
child node. Example:
<util:include-expr>
<xsp:expr>$xml_fragment</xsp:expr>
</util:include-expr>
=head2 C<<util:time>>
Returns a formatted time/date string. Requires a B<format> attribute.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
if (UNIVERSAL::isa($data,'XML::LibXML::Node')) {
$document->importNode($data);
$parent->appendChild($data);
next;
}
die 'data is not a hash ref or DOM fragment!' unless ref($data) eq 'HASH';
while (my ($key, $val) = each %$data) {
my $outer_namespaces_added = 0;
if (substr($key,0,1) eq '@') {
$key = substr($key,1);
die 'attribute value is not a simple scalar!' if ref($val);
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
flag.
Contrary to the former behaviour, your tag handler is called during the XSP execution stage,
so you should directly return the result value. The C<XSP_compile> flag is available to
have your handler called in the parse stage, when the XSP script is being constructed. Then,
it is the responsibility of the handler to return a I<Perl code fragment> to be appended to
the XSP script.
As a comparison, TaglibHelper subs are strictly run-time called, while plain taglibs without
any helper are strictly compile-time called.
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
In C<XSP_compile> mode, the called subs get passed 3 parameters: The parser object, the tag name,
and an attribute hash (no ref!). This hash only contains XML attributes declared using the
'attrib()' Perl function attribute. (Try not to confuse these two meanings of 'attribute' -
unfortunately XML and Perl both call them that way.) The other declared parameters get converted
into local variables with prefix 'attr_', or, in the case of 'XSP_smart', converted into the
'$xml_subtree' object. These local variables are only available inside your code fragment which
becomes part of the XSP script, unlike the attribute hash which is passed directly to
your handler as the third parameter.
If a sub has an output attribute ('node', 'expr', etc.), the sub (or code fragment) will be run
in list context. If necessary, returned lists get converted to scalars by joining them
without separation. Code fragments from plain subs (without an output attribute) inherit
their context and have their return value left unmodified.
=head2 Precedence
If more than one handler matches a tag, the following rules determine which one is chosen.
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
=back
=head2 Utility functions
AxKit2::Transformer::XSP contains a few handy utility subs to help build your code fragment:
=over 4
=item start_elem, end_elem, start_attr, end_attr
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
in the output document. Call them just like you call start_expr and end_expr.
=item makeSingleQuoted
given a scalar as input, it returns a scalar which yields
the exact input value when evaluated; handy when using unknown text as-is in code fragments.
=item makeVariableName
creates a valid, readable perl identifier from arbitrary input text.
The return values might overlap.
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
=back
=head1 PERL ATTRIBUTES
Perl function attributes are used to define how XML output should be generated from your
code fragment and how XML input should be presented to your handler. Note that
parameters to attributes get handled as if 'q()' enclosed them (explicit quote marks are
not needed). Furthermore, commas separate parameters (except for childStruct), so a
parameter cannot contain a comma.
=head2 Output attributes
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
Like exprOrNode, selecting between 'expr' and 'nodelist()' behaviour.
=head3 C<XSP_struct>
Makes this tag create a more complex XML fragment. You may return a single hashref or an array
of hashrefs, which get converted into an XML structure. Each hash element may contain a scalar,
which gets converted into an XML tag with the key as name and the value as content. Alternatively,
an element may contain an arrayref, which means that an XML tag encloses each single array element.
Finally, you may use hashrefs in place of scalars to create substructures. To create attributes on
tags, use a hashref that contain the attribute names prefixed by '@'. A '' (empty
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
These may appear more than once and modify output behaviour.
=head3 C<XSP_compile>
Makes this tag called at XSP compile time, not run time. It must return a Perl code fragment.
For more details, see the sections above.
=head3 C<XSP_nodeAttr(name,expr,...)>
Adds an XML attribute named C<name> to all generated nodes. C<expr> gets evaluated at run time.
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
=head3 C<XSP_child(name,...)>
Declares a child tag C<name>. It always lies within the same namespace as the taglib itself. The
contents of the tag, if any, get saved in a local variable named $attr_C<name> and made
available to your code fragment. If the child tag appears more than once, the last value
overrides any previous value.
=head3 C<XSP_attribOrChild(name,...)>
Declares an attribute or child tag named C<name>. A variable is created just like for 'child()',
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
Makes this tag preserve contained whitespace.
=head3 C<XSP_captureContent>
Makes this tag store the enclosed content in '$_' for later retrieval in your code fragment instead
of adding it to the enclosing element. Non-text nodes will not work as expected.
=head3 C<XSP_stack(attrname)>
This will create a stack of objects for your taglib. Each taglib has exactly one stack, however.
lib/AxKit2/XSP/SimpleTaglib.pm view on Meta::CPAN
=head2 Miscellaneous
Because of the use of perl attributes, SimpleTaglib will only work with Perl 5.6.0 or later.
This software is already tested quite well and works for a number of simple and complex
taglibs. Still, you may have to experiment with the attribute declarations, as the differences
can be quite subtle but decide between 'it works' and 'it doesn't'. XSP can be quite fragile if
you start using heavy trickery.
If some tags don't work as expected, try surrounding the offending tag with
<xsp:content>, this is a common gotcha (but correct and intended). If you find you need
<xsp:expr> around a tag, please contact the author, that is probably a bug.
view all matches for this distribution
view release on metacpan or search on metacpan
* ByteLoader (0.10): set sv_refcnt to 1 in newsv to skip most defaults
* Assembler (1.11): allow "newpadlx 0"
* Disassembler (1.12): use B::Concise op_flags and private_flags
* Stash (1.03): fix compilation for 5.8.8 and below: gv_fetchsv missing
* t/perldoc.t: perlcc fails with 5.8 because Cwd disturbs the
fragile method package finder for File::Spec. Use cc_harness.
1.42 2012-02-01 rurban
stable up to 5.14
* C: Improved finding methods in parent classes (Warning: method not found),
Remove strawberry PerlProc_setjmp definition, #define PERL_CORE fixed that
* Bytecode.pm (1.06): same NVX => xpad_cop_seq fix as in C.pm, added 2 new
bytecodes (cop_seq_low, cop_seq_high), fixed tests 9,10,12. Passes
all tests > 5.6 now.
* bytecode.pl: added cop_seq_low (155), cop_seq_high (156) instead of xnv.
No conversion code for loading older bytecode needed, but fragile (double => 2 int)
* t/modules.t: refactored by Todd Rinaldo (toddr). 4*tests per module:
-s a, exitcode 0, ok, no warnings on stderr
* t/TESTS: added 38, failing on CC (Nick Koston).
added 39, failing everywhere.
* t/test.pl: refactor: Try to timeout on all tests (compiler and exec) if
view all matches for this distribution
view release on metacpan or search on metacpan
lib/B/Deobfuscate/Dict/Flowers.pm view on Meta::CPAN
1;
__DATA__
Alpine Hulsea
Alpine Saxifrage
Alpine Skunkbush
Alpine Sorrel
Alpine Spiraea
Alpine Sunflower
Alp Lily
lib/B/Deobfuscate/Dict/Flowers.pm view on Meta::CPAN
Bog Buckbean
Bog St. John's Wort
Bracted Lousewort
Brewer's Cliff Brake
Brewer's Monkeyflower
Brook Saxifrage
Broom Buckwheat
Buckbrush
Buffalo Bur
Bunchberry
Burke's Larkspur
lib/B/Deobfuscate/Dict/Flowers.pm view on Meta::CPAN
Hudson's Bay Currant
Indian Pipe
Indian Pond Lily
Inflated Sedge
Jacob's Ladder
James' Saxifrage
John Day Valley Desert Parsley
Johnny Jump Up
Kern Daisy
Kinniknnick
Klamath Weed
lib/B/Deobfuscate/Dict/Flowers.pm view on Meta::CPAN
Orcutt's Brodiaea
Oregon Bolandra
Oregon Bottle Gentian
Oregon Boxwood
Oregon Lily
Oregon Saxifrage
Oregon Sunshine
Oregon Wild Cucumber
Pacific Azelea
Pacific Dogwood
Pacific Rhododendron
lib/B/Deobfuscate/Dict/Flowers.pm view on Meta::CPAN
Stickly Geranium
Sticky Currant
Sticky Laurel
Sticky Penstemon
Sticky Phlox
Streambank Saxifrage
Sugar Bowls
Sulfur Buckwheat
Sulfur Cinquefoil
Swale Desert Parsley
Swamp Saxifrage
Tailcup Lupine
Tall Mountain Bluebells
Tall Phacelia
Tansy-leaved Evening Primrose
Tansy Ragwort
view all matches for this distribution
view release on metacpan or search on metacpan
scripts/frag.pl view on Meta::CPAN
use strict; use warnings;
use constant data_dir => File::Spec->catfile(dirname(__FILE__));
use Getopt::Long;
my ($show_tree, $show_orig, $show_fragments) = (0, 1, 0);
GetOptions ("tree|t" => \$show_tree,
"frag|f" => \$show_fragments,
"orig|o" => \$show_orig)
or die("Error in command line arguments\n");
my $short_name = $ARGV[0] || 'bug.pm';
my $test_data = File::Spec->catfile(data_dir, $short_name);
scripts/frag.pl view on Meta::CPAN
print "Same as above\n";
} else {
print $tree_text, "\n";
}
if ($show_fragments) {
B::DeparseTree::Fragment::dump($deparse_tree);
}
if ($show_tree) {
my $svref = B::svref_2object(\&bug);
view all matches for this distribution
view release on metacpan or search on metacpan
- Added English names for %!, @F (perlrun) and @ARG for @_ (Zsbán Ambrus)
- Added %+ %- (Zsbán Ambrus) and $LAST_SUBMATCH_RESULT
1.14 Sat Feb 21 2015 rurban
- removed err from Barewords, RT #102259 (Alex Efros a.k.a. Powerman)
1.15 Wed Nov 11 2015 rurban
- Fixed $OUTPUT_AUTOFLUSH, RT #108572 (Defragmented Reality)
- Made $* $MULTILINE_MATCHING version specific, deprecated with 5.8.1,
removed with 5.10
1.16 Thu Dec 28 2017 rurban
- Added 5.27.7 changes, RT #123948
- Added cperl class keywords
view all matches for this distribution
view release on metacpan or search on metacpan
lib/B/Stats.pm view on Meta::CPAN
=item -F I<Files>
Prints included file names
=item -x I<fragmentation> B<NOT YET>
Calculates the optree I<fragmentation>. 0.0 is perfect, 1.0 is very bad.
A perfect optree has no null ops and every op->next is immediately next
to the op.
=item -f<op,...> I<filter> B<NOT YET>
lib/B/Stats.pm view on Meta::CPAN
# Changed to DynaLoader
# Opcodes-0.10 adds 6 files and 5303-3821 lines: Carp, AutoLoader, subs
# Opcodes-0.11 adds 2 files and 4141-3821 lines: subs
# use Opcodes; # deferred to run-time below
our ($static, @runtime, $compiled, $imported, $LOG);
my (%opt, $nops, $rops, @all_subs, $frag, %roots);
my ($c_count, $e_count, $r_count);
# check options
sub import {
$DB::single = 1 if defined &DB::DB;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/BATsh/SH.pm view on Meta::CPAN
# ----------------------------------------------------------------
# extglob (v0.07): ?(list) *(list) +(list) @(list) !(list) pattern-list
# operators, active only while "shopt -s extglob" is on. Shared by
# _case_glob_to_re() (case patterns) and _glob_to_re() (${VAR%pat} and
# friends). $convert_sub converts one pattern-list alternative (which
# may itself contain nested extglob groups) to a regex fragment.
#
# Returns ($pos_after_close_paren, $regex_fragment), or () when the
# text at $i is not a well-formed extglob group (extglob is then left
# to fall through to its ordinary, literal meaning for that character).
#
# !(list) is approximated as "any run of characters that never forms a
# complete match of one of the alternatives" via a negative lookahead
lib/BATsh/SH.pm view on Meta::CPAN
return () if $depth != 0;
my @alts = _extglob_split_alts($body);
my @re_alts = map { $convert_sub->($_) } @alts;
my $inner = '(?:' . join('|', @re_alts) . ')';
my $frag;
if ($op eq '?') { $frag = $inner . '?' }
elsif ($op eq '*') { $frag = $inner . '*' }
elsif ($op eq '+') { $frag = $inner . '+' }
elsif ($op eq '@') { $frag = $inner }
elsif ($op eq '!') { $frag = '(?:(?!' . $inner . ').)*' }
else { return () }
return ($j, $frag);
}
# _extglob_split_alts: split an extglob pattern-list body on top-level
# '|' (respecting nested parens and backslash escapes).
sub _extglob_split_alts {
lib/BATsh/SH.pm view on Meta::CPAN
# _strip_sh_comment: remove a trailing "# ..." comment from one SH
# physical line. A '#' introduces a comment only when it is unquoted,
# outside any $(...)/${...}/`...` region, and begins a word (preceded by
# the start of line or by whitespace / ; / & / | / '(' ). This leaves
# parameter forms such as $#, ${#var}, ${var#pat} and an in-word '#'
# (echo a#b, http://h#frag) untouched, matching POSIX shells. Pure Perl
# 5.005_03 (hand-rolled scan; no regex features).
sub _strip_sh_comment {
my ($line) = @_;
return $line unless defined $line && index($line, '#') >= 0;
my @c = split //, $line;
lib/BATsh/SH.pm view on Meta::CPAN
# _inline_body_has_control: true when a single-line function body
# (the text between the braces of "name() { ... }") contains a shell
# control-structure keyword in command position -- if/for/while/until/
# case/select as the first word, or after a ';', '&&', '||' or '|'.
# Such a body must not be torn apart on ';' (that would split
# "while C; do B; done" into unusable fragments); the caller keeps it
# as one line so _run_lines()'s inline-control handling parses it.
# Quotes, $(...), `...` and ${...} are skipped so a keyword appearing
# only inside them (echo "done", VAR=$(case ...)) does not count.
# Perl 5.005_03 compatible: character scan, no regex features beyond
# \A and \b.
lib/BATsh/SH.pm view on Meta::CPAN
group long before the word reaches the pathname matcher.
=item *
C<!(list)> is approximated with a repeated negative-lookahead regex
fragment ("any run of characters that never forms a complete match of
one of the alternatives"). This matches the common "exclude these whole
patterns" usage exactly, but is not a byte-for-byte reimplementation of
bash's extglob matcher when C<!(...)> is combined with further pattern
text after it in the same glob.
view all matches for this distribution