simplicity sewing patterns
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 751
Knitting Pattern Generator 0.3
Knitting Pattern Generator is a Python script to convert image files (PNG, GIF, BMP, etc.) into knitting patterns. more>>
Knitting Pattern Generator is a Python script to convert image files (PNG, GIF, BMP, etc.) into knitting patterns.
Usage:
python kpg.py myimage.png
<<lessUsage:
python kpg.py myimage.png
Download (0.008MB)
Added: 2007-04-25 License: GPL (GNU General Public License) Price:
923 downloads
Object::PerlDesignPatterns 0.03
Object::PerlDesignPatterns is a Perl architecture for structuring and refactoring large programs. more>>
Object::PerlDesignPatterns is a Perl architecture for structuring and refactoring large programs.
SYNOPSIS
lynx perldesignpatterns.html
perldoc Object::PerlDesignPatterns
ABSTRACT
Documentation: Ideas for keeping programs fun to hack on even after they grow large. Object, lambda, hybrid structures, Perl specific methods of refactoring, object tricks, anti-patterns, non-structural recurring code patterns.
PerlDesignPatterns is a free book sporting:
Ideas for keeping programs fun to hack on even after they grow large. Object, lambda, hybrid structures, Perl specific methods of refactoring, object tricks, anti-patterns, non-structural recurring code patterns.
Feel free to jump right in and make corrections, suggestions, ask questions, play editor, or just rant. Start in http://www.perldesignpatterns.com/?TinyWiki to learn about the TinyWiki software, make a page for yourself, play with editing that, perhaps make a link from the GuestLog to your page. The markup language is ASCII based - it couldnt be any easier.
This document is a snapshot of the current state of the Wiki, automatically compiled from hundreds of individual sections by a Perl script.
<<lessSYNOPSIS
lynx perldesignpatterns.html
perldoc Object::PerlDesignPatterns
ABSTRACT
Documentation: Ideas for keeping programs fun to hack on even after they grow large. Object, lambda, hybrid structures, Perl specific methods of refactoring, object tricks, anti-patterns, non-structural recurring code patterns.
PerlDesignPatterns is a free book sporting:
Ideas for keeping programs fun to hack on even after they grow large. Object, lambda, hybrid structures, Perl specific methods of refactoring, object tricks, anti-patterns, non-structural recurring code patterns.
Feel free to jump right in and make corrections, suggestions, ask questions, play editor, or just rant. Start in http://www.perldesignpatterns.com/?TinyWiki to learn about the TinyWiki software, make a page for yourself, play with editing that, perhaps make a link from the GuestLog to your page. The markup language is ASCII based - it couldnt be any easier.
This document is a snapshot of the current state of the Wiki, automatically compiled from hundreds of individual sections by a Perl script.
Download (0.55MB)
Added: 2006-07-31 License: Perl Artistic License Price:
1180 downloads
Polyester 1.0
Polyester is a widget style + kwin decoration both aimed to be a good balance between eye candy and simplicity. more>>
Polyester is a widget style + kwin decoration both aimed to be a good balance between eye candy and simplicity.
<<less Download (MB)
Added: 2007-04-13 License: GPL (GNU General Public License) Price:
926 downloads
Pattern-lab 0.4.0
Pattern-lab is a pattern recognition program. more>>
Pattern-lab is a pattern recognition program. Pattern-lab project is optimized for OCR, but not constrained to it. The method used is mainly pattern matching. Separation of merged patterns is one of the main goals. It is currently under development.
Enhancements:
- This release adds the Standardizing Transformation (ST) embedding IMage Euclidean Distance (IMED) in the preprocessing phase.
- Positive and negative effects of the new feature are explained in the manual.
<<lessEnhancements:
- This release adds the Standardizing Transformation (ST) embedding IMage Euclidean Distance (IMED) in the preprocessing phase.
- Positive and negative effects of the new feature are explained in the manual.
Download (2.5MB)
Added: 2007-03-21 License: GPL (GNU General Public License) Price:
950 downloads
JWebPresenter 1.3
JWebPresenter project is a bitmap-image based Web presenting system. more>>
JWebPresenter project is a bitmap-image based Web presenting system.
It can add a Web extension to your favorite presentation tool, such as PowerPoint, MagicPoint, or Impress.
This is useful in distance learning, meeting, conferencing, and other situations.
It uses bitmap images to avoid compatibility problems. Other features include platform independence and simplicity.
Main features:
- Bitmap image based presenting: Hence we have no compatibility problem related to character corruption, locale, font, ... You can (and you must) use an authoring tool (e.g., PowerPoint, OpenOffice, MagicPoint, etc) to create the slides, then export into images to be presented with JWebPresenter.
- Platform independent: Any system satisfying the requirements should be OK, including Linux PC, Windows PC, PDA Sharp Zaurus SL-C760 (JWebPresenter SS v1.0x).
- Simplicity: I believe simple thing should be done simply. JWebPresenter SS v1.2.1 package (tar.gz) is only 36KB, including source, pre-compiled binarary, document, sample, and a 18KB (uncompressed size) license called GPL!
- Protocol and Image format independent: All protocols and image formats supported by JRE (Java Runtime Enviroment) should be OK.
- Efficience: There is little overhead in JWebPresenter.
<<lessIt can add a Web extension to your favorite presentation tool, such as PowerPoint, MagicPoint, or Impress.
This is useful in distance learning, meeting, conferencing, and other situations.
It uses bitmap images to avoid compatibility problems. Other features include platform independence and simplicity.
Main features:
- Bitmap image based presenting: Hence we have no compatibility problem related to character corruption, locale, font, ... You can (and you must) use an authoring tool (e.g., PowerPoint, OpenOffice, MagicPoint, etc) to create the slides, then export into images to be presented with JWebPresenter.
- Platform independent: Any system satisfying the requirements should be OK, including Linux PC, Windows PC, PDA Sharp Zaurus SL-C760 (JWebPresenter SS v1.0x).
- Simplicity: I believe simple thing should be done simply. JWebPresenter SS v1.2.1 package (tar.gz) is only 36KB, including source, pre-compiled binarary, document, sample, and a 18KB (uncompressed size) license called GPL!
- Protocol and Image format independent: All protocols and image formats supported by JRE (Java Runtime Enviroment) should be OK.
- Efficience: There is little overhead in JWebPresenter.
Download (0.050MB)
Added: 2006-10-09 License: GPL (GNU General Public License) Price:
1111 downloads
CVSPermissions 0.4
CVSPermissions is a toolkit that will allow CVS administrators to set up directory level access control in CVS. more>>
CVSPermissions is a toolkit that will allow CVS administrators to set up directory level access control in CVS for multiple CVS users.
This toolkit is a collection of shell scripts and CVS configuration to achieve the access control functionality.
Enhancements:
- This release implements changes to all the grep patterns to accurately search for strings.
<<lessThis toolkit is a collection of shell scripts and CVS configuration to achieve the access control functionality.
Enhancements:
- This release implements changes to all the grep patterns to accurately search for strings.
Download (0.050MB)
Added: 2005-11-15 License: GPL (GNU General Public License) Price:
1439 downloads
Miningco 2.5
Miningco is an automatic data-mining tool. more>>
Miningco is an automatic data-mining (can be used for business intelligence) tool.
It can analyse a table in a database and then automatically give you a list of remarkable rules to which your data complies.
It can find for patterns on what columns they depend. From version 2.0 it can also group ranges of values into 1 rule.
Example scripts have been added for datamining on Nagios and Apache logging.
Enhancements:
- Improved clustering: no more fuzzy ranges, as well as better combining ranges.
<<lessIt can analyse a table in a database and then automatically give you a list of remarkable rules to which your data complies.
It can find for patterns on what columns they depend. From version 2.0 it can also group ranges of values into 1 rule.
Example scripts have been added for datamining on Nagios and Apache logging.
Enhancements:
- Improved clustering: no more fuzzy ranges, as well as better combining ranges.
Download (0.008MB)
Added: 2005-10-15 License: GPL (GNU General Public License) Price:
1469 downloads
KMidiTracker 0.5.13
KMidiTracker is a MIDI Step Sequencer. more>>
KMidiTracker is a MIDI Step Sequencer.
A Step Sequencer is a sequencer in witch the MIDI notes are delivered at regular time intervals, usually a 1/4th of a quarter note. As such it is not as versatile as a regular sequencer as [Rosegarden], but allows very easy creation of loops and sequences. The use of the [MIDI Clock] allows several sequencers communicate clock events, so it is possible to join several sequencers, with diverse focus, to make one single synchronized composition.
KMidiTracker is similar to trackers like [FastTracker], [ScreamTracker] or [Buzz], but only the Tracker; no actual sound is emmited. Only MIDI signals.
The Tracker divides songs in tracks, each one have several patterns that are arranged as sequences. Time advance in steps that depend on tempo, and in each time step a new MIDI note may sound, or a controller event may be sent. You can have several columns of notes and/or controllers for each pattern, and pattern length is configurable.
Main features:
- MIDI oriented Step Sequencer
- ALSA MIDI input/output
- MIDI thru
- Keyboard input
- Graphical Controller edition
- Controllers include MIDI Controllers, SysEx Controllers and PitchBend
- MIDI Master Clock (master and slave)
- Linux RTC timer or MMC if avaliable for perfect timing
- Tracks and columns in patterns muteable
- SysEx parameters. Can be loaded from binary file, manually inserted in hex, or captured from midi input.
- Variable Time Signature
- Load/Save
- KDE application: easy menu, toolbar and shortcuts changes
- Everything can be changed in realtime: notes, arrangement, loops, controllers, load/save, new tracks or patterns, delete tracks or patterns...
- [GPL] license
<<lessA Step Sequencer is a sequencer in witch the MIDI notes are delivered at regular time intervals, usually a 1/4th of a quarter note. As such it is not as versatile as a regular sequencer as [Rosegarden], but allows very easy creation of loops and sequences. The use of the [MIDI Clock] allows several sequencers communicate clock events, so it is possible to join several sequencers, with diverse focus, to make one single synchronized composition.
KMidiTracker is similar to trackers like [FastTracker], [ScreamTracker] or [Buzz], but only the Tracker; no actual sound is emmited. Only MIDI signals.
The Tracker divides songs in tracks, each one have several patterns that are arranged as sequences. Time advance in steps that depend on tempo, and in each time step a new MIDI note may sound, or a controller event may be sent. You can have several columns of notes and/or controllers for each pattern, and pattern length is configurable.
Main features:
- MIDI oriented Step Sequencer
- ALSA MIDI input/output
- MIDI thru
- Keyboard input
- Graphical Controller edition
- Controllers include MIDI Controllers, SysEx Controllers and PitchBend
- MIDI Master Clock (master and slave)
- Linux RTC timer or MMC if avaliable for perfect timing
- Tracks and columns in patterns muteable
- SysEx parameters. Can be loaded from binary file, manually inserted in hex, or captured from midi input.
- Variable Time Signature
- Load/Save
- KDE application: easy menu, toolbar and shortcuts changes
- Everything can be changed in realtime: notes, arrangement, loops, controllers, load/save, new tracks or patterns, delete tracks or patterns...
- [GPL] license
Download (0.61MB)
Added: 2005-09-17 License: GPL (GNU General Public License) Price:
1497 downloads
Boost.Join r3
Boost.Join is an asynchronous, message based C++ concurrency library based on join calculus. more>>
Boost.Join is an asynchronous, message based C++ concurrency library based on join calculus. It is applicable both to multi-threaded applications and to the orchestration of asynchronous, event-based applications.
The project follows Comegas design and implementation and builds with Boost facilities. It provides a high level concurrency API with asynchronous methods, synchronous methods, and chords which are "join-patterns" defining the synchronization, asynchrony, and concurrency.
Enhancements:
- Major design changes were made for simplicity and efficiency.
- The library and executables are now smaller and faster.
- The design was kept more consistent with Cw (by removing guards which are error-prone and multi synch methods).
- Many changes were made to reduce copying and buffering.
- The documentation was updated with design changes and the addition more information about implementation and integration with other libraries.
<<lessThe project follows Comegas design and implementation and builds with Boost facilities. It provides a high level concurrency API with asynchronous methods, synchronous methods, and chords which are "join-patterns" defining the synchronization, asynchrony, and concurrency.
Enhancements:
- Major design changes were made for simplicity and efficiency.
- The library and executables are now smaller and faster.
- The design was kept more consistent with Cw (by removing guards which are error-prone and multi synch methods).
- Many changes were made to reduce copying and buffering.
- The documentation was updated with design changes and the addition more information about implementation and integration with other libraries.
Download (0.057MB)
Added: 2007-07-20 License: MIT/X Consortium License Price:
826 downloads
MP3::Tag::ParseData 0.9709
MP3::Tag::ParseData is a Perl module for parsing arbitrary data associated with music files. more>>
MP3::Tag::ParseData is a Perl module for parsing arbitrary data associated with music files.
SYNOPSIS
# parses the file name according to one of the patterns:
$mp3->config(parse_data, [i, %f, %t - %n - %a.%e, %t - %y.%e]);
$title = $mp3->title;
<<lessSYNOPSIS
# parses the file name according to one of the patterns:
$mp3->config(parse_data, [i, %f, %t - %n - %a.%e, %t - %y.%e]);
$title = $mp3->title;
Download (0.17MB)
Added: 2007-07-19 License: Perl Artistic License Price:
827 downloads
Skaringa r3p7
Skaringa is an API for Java and XML language binding. more>>
Skaringa is an API for Java and XML language binding.
It transforms Java objects into XML documents and back, and can generate XML schema definitions for a Java class.
Typical applications are data exchange, object persistence, object transformation, and driving XML based presentation layers.
Skaringa is designed for speed and simplicity, supporting a wide range of types. Skaringa works with all Plain Old Java Objects (POJOs), it is not limited to special cases, like JavaBeans.
Enhancements:
- New layout of documentation and website.
- Use SiteBuilder to generate HTML documententation.
<<lessIt transforms Java objects into XML documents and back, and can generate XML schema definitions for a Java class.
Typical applications are data exchange, object persistence, object transformation, and driving XML based presentation layers.
Skaringa is designed for speed and simplicity, supporting a wide range of types. Skaringa works with all Plain Old Java Objects (POJOs), it is not limited to special cases, like JavaBeans.
Enhancements:
- New layout of documentation and website.
- Use SiteBuilder to generate HTML documententation.
Download (0.20MB)
Added: 2005-07-05 License: GPL (GNU General Public License) Price:
1571 downloads
Array::PatternMatcher 0.04
Array::PatternMatcher is a pattern matching for arrays. more>>
Array::PatternMatcher is a pattern matching for arrays.
SYNOPSIS
This section inlines the entire test suite. Please excuse the ok()s.
use Array::PatternMatcher;
Matching logical variables to input stream
# 1 - simple match of logical variable to input
my $pattern = AGE ;
my $input = 969 ;
my $result = pat_match ($pattern, $input, {} ) ;
ok($result->{AGE}, 969) ;
# 2 - if binding exists, it must equal the input
$input = 12;
my $new_result = pat_match ($pattern, $input, $result) ;
ok(!defined($new_result)) ;
# 3 - bind the pattern logical variables to the input list
$pattern = [qw(X Y)] ;
$input = [ 77, 45 ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok($result->{X}, 77) ;
Matching segments (quantifying) portions of the input stream
# 1
{
my $pattern = [a, [qw(X *)], d] ;
my $input = [a, b, c, d] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ("@{$result->{X}}","b c") ;
}
# 2
{
my $pattern = [a, [qw(X *)], [qw(Y *)], d] ;
my $input = [a, b, c, d] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ("@{$result->{Y}}","b c") ;
}
# 3
{
my $pattern = [a, [qw(X +)], d] ;
my $input = [a, b, c, d] ;
ok ("@{$result->{X}}","b c") ;
}
# 4
{
my $pattern = [ a, [qw(X ?)], c ] ;
my $input = [ a, b, c ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ("$result->{X}","b") ;
}
# 5
{
my $pattern = [ qw(X OP Y is Z),
[
sub { "($_->{X} $_->{OP} $_->{Y}) == $_->{Z}" },
IF?
]
] ;
my $input = [qw(3 + 4 is 7) ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ($result) ;
}
Single-matching:
Take a single input and a series of patterns and decide which pattern
matches the input:
# 1 - Here all input patterns must match the input
{
my @pattern ;
push @pattern, [ qw(X Y) ] ;
push @pattern, [ qw(22 Z ) ] ;
push @pattern, [ qw(M 33) ] ;
my $input = [ qw(22 33) ] ;
my $meta_pattern = [ AND?, @pattern ] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($meta_pattern, $input, {} ) ;
ok ($result->{Z},33) ;
}
# 2 - Here, any one of the patterns must match the input
{
my @pattern ;
push @pattern, [ qw(99 22) ] ;
push @pattern, [ qw(33 22) ] ;
push @pattern, [ qw(44 3) ] ;
push @pattern, [ qw(22 Z) ] ;
my $input = [ qw(22 33) ] ;
my $meta_pattern = [ OR?, @pattern ] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($meta_pattern, $input, {} ) ;
ok ($result->{Z},33) ;
}
# 3 - Here, none of the patterns must match the input
{
my @pattern ;
push @pattern, [ qw(99 22) ] ;
push @pattern, [ qw(33 22) ] ;
push @pattern, [ qw(44 3) ] ;
push @pattern, [ qw(22 Z) ] ;
my $input = [ qw(22 33) ] ;
my $meta_pattern = [ NOT?, @pattern ] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($meta_pattern, $input, {} ) ;
ok (scalar keys %$result == 0) ;
}
# 4 - here the input must satisfy the predicate
{
sub numberp { $_[0] =~ /d+/ }
my $pattern = [ qw(X age), [qw(IS? N), νmberp] ] ;
my $input = [ qw(Mary age), thirty-four ] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($pattern, $input, {} ) ;
ok (!defined($result));
}
# 5 - same thing, but this time a failing result ---
# not undef because it is the return val of numberp
{
sub numberp { $_[0] =~ /d+/ }
my $pattern = [ qw(X age), [qw(IS? N), νmberp] ] ;
my $input = [ qw(Mary age), 34 ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ($result->{N},34) ;
}
Segment-matching:
Match a chunk of the input stream using *, +, ?
# 1 - * is greedy in this case, but not with 2 consecutve * patterns
{
my $pattern = [a, [qw(X *)], d] ;
my $input = [a, b, c, d] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($pattern, $input, {} ) ;
warn sprintf "X*RETVAL: %s", Data::Dumper::Dumper($result) ;
ok ("@{$result->{X}}","b c") ;
}
# 2 - X* gets nothing, Y* gets all it can:
{
my $pattern = [a, [qw(X *)], [qw(Y *)], d] ;
my $input = [a, b, c, d] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($pattern, $input, {} ) ;
warn sprintf "X*Y*RETVAL: %s", Data::Dumper::Dumper($result) ;
ok ("@{$result->{Y}}","b c") ;
}
# 3 - samething , but require at least one match for X
{
my $pattern = [a, [qw(X +)], d] ;
my $input = [a, b, c, d] ;
my $result = pat_match ($pattern, $input, {} ) ;
warn sprintf "RETVAL: @{$result->{X}}" ;
ok ("@{$result->{X}}","b c") ;
}
# 4 - require 0 or 1 match for X
{
my $pattern = [ a, [qw(X ?)], c ] ;
my $input = [ a, b, c ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ("$result->{X}","b") ;
}
# 5 - evaluate a sub on the fly after match
{
my $pattern = [ qw(X OP Y is Z),
[
sub { "($_->{X} $_->{OP} $_->{Y}) == $_->{Z}" },
IF?
]
] ;
my $input = [qw(3 + 4 is 7) ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ($result) ;
}
# --- 6 same thing, but fail
{
my $pattern = [ qw(X OP Y is Z),
[
sub { "($_->{X} $_->{OP} $_->{Y}) == $_->{Z}" },
IF?
]
] ;
my $input = [qw(3 + 4 is 8) ] ;
my $result = pat_match ($pattern, $input, {} ) ;
warn sprintf "IF_RETVAL2: *%s*", Data::Dumper::Dumper($result);
ok ($result eq ) ;
}
<<lessSYNOPSIS
This section inlines the entire test suite. Please excuse the ok()s.
use Array::PatternMatcher;
Matching logical variables to input stream
# 1 - simple match of logical variable to input
my $pattern = AGE ;
my $input = 969 ;
my $result = pat_match ($pattern, $input, {} ) ;
ok($result->{AGE}, 969) ;
# 2 - if binding exists, it must equal the input
$input = 12;
my $new_result = pat_match ($pattern, $input, $result) ;
ok(!defined($new_result)) ;
# 3 - bind the pattern logical variables to the input list
$pattern = [qw(X Y)] ;
$input = [ 77, 45 ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok($result->{X}, 77) ;
Matching segments (quantifying) portions of the input stream
# 1
{
my $pattern = [a, [qw(X *)], d] ;
my $input = [a, b, c, d] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ("@{$result->{X}}","b c") ;
}
# 2
{
my $pattern = [a, [qw(X *)], [qw(Y *)], d] ;
my $input = [a, b, c, d] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ("@{$result->{Y}}","b c") ;
}
# 3
{
my $pattern = [a, [qw(X +)], d] ;
my $input = [a, b, c, d] ;
ok ("@{$result->{X}}","b c") ;
}
# 4
{
my $pattern = [ a, [qw(X ?)], c ] ;
my $input = [ a, b, c ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ("$result->{X}","b") ;
}
# 5
{
my $pattern = [ qw(X OP Y is Z),
[
sub { "($_->{X} $_->{OP} $_->{Y}) == $_->{Z}" },
IF?
]
] ;
my $input = [qw(3 + 4 is 7) ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ($result) ;
}
Single-matching:
Take a single input and a series of patterns and decide which pattern
matches the input:
# 1 - Here all input patterns must match the input
{
my @pattern ;
push @pattern, [ qw(X Y) ] ;
push @pattern, [ qw(22 Z ) ] ;
push @pattern, [ qw(M 33) ] ;
my $input = [ qw(22 33) ] ;
my $meta_pattern = [ AND?, @pattern ] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($meta_pattern, $input, {} ) ;
ok ($result->{Z},33) ;
}
# 2 - Here, any one of the patterns must match the input
{
my @pattern ;
push @pattern, [ qw(99 22) ] ;
push @pattern, [ qw(33 22) ] ;
push @pattern, [ qw(44 3) ] ;
push @pattern, [ qw(22 Z) ] ;
my $input = [ qw(22 33) ] ;
my $meta_pattern = [ OR?, @pattern ] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($meta_pattern, $input, {} ) ;
ok ($result->{Z},33) ;
}
# 3 - Here, none of the patterns must match the input
{
my @pattern ;
push @pattern, [ qw(99 22) ] ;
push @pattern, [ qw(33 22) ] ;
push @pattern, [ qw(44 3) ] ;
push @pattern, [ qw(22 Z) ] ;
my $input = [ qw(22 33) ] ;
my $meta_pattern = [ NOT?, @pattern ] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($meta_pattern, $input, {} ) ;
ok (scalar keys %$result == 0) ;
}
# 4 - here the input must satisfy the predicate
{
sub numberp { $_[0] =~ /d+/ }
my $pattern = [ qw(X age), [qw(IS? N), νmberp] ] ;
my $input = [ qw(Mary age), thirty-four ] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($pattern, $input, {} ) ;
ok (!defined($result));
}
# 5 - same thing, but this time a failing result ---
# not undef because it is the return val of numberp
{
sub numberp { $_[0] =~ /d+/ }
my $pattern = [ qw(X age), [qw(IS? N), νmberp] ] ;
my $input = [ qw(Mary age), 34 ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ($result->{N},34) ;
}
Segment-matching:
Match a chunk of the input stream using *, +, ?
# 1 - * is greedy in this case, but not with 2 consecutve * patterns
{
my $pattern = [a, [qw(X *)], d] ;
my $input = [a, b, c, d] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($pattern, $input, {} ) ;
warn sprintf "X*RETVAL: %s", Data::Dumper::Dumper($result) ;
ok ("@{$result->{X}}","b c") ;
}
# 2 - X* gets nothing, Y* gets all it can:
{
my $pattern = [a, [qw(X *)], [qw(Y *)], d] ;
my $input = [a, b, c, d] ;
# if no bindings, add a binding between pattern and input
my $result = pat_match ($pattern, $input, {} ) ;
warn sprintf "X*Y*RETVAL: %s", Data::Dumper::Dumper($result) ;
ok ("@{$result->{Y}}","b c") ;
}
# 3 - samething , but require at least one match for X
{
my $pattern = [a, [qw(X +)], d] ;
my $input = [a, b, c, d] ;
my $result = pat_match ($pattern, $input, {} ) ;
warn sprintf "RETVAL: @{$result->{X}}" ;
ok ("@{$result->{X}}","b c") ;
}
# 4 - require 0 or 1 match for X
{
my $pattern = [ a, [qw(X ?)], c ] ;
my $input = [ a, b, c ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ("$result->{X}","b") ;
}
# 5 - evaluate a sub on the fly after match
{
my $pattern = [ qw(X OP Y is Z),
[
sub { "($_->{X} $_->{OP} $_->{Y}) == $_->{Z}" },
IF?
]
] ;
my $input = [qw(3 + 4 is 7) ] ;
my $result = pat_match ($pattern, $input, {} ) ;
ok ($result) ;
}
# --- 6 same thing, but fail
{
my $pattern = [ qw(X OP Y is Z),
[
sub { "($_->{X} $_->{OP} $_->{Y}) == $_->{Z}" },
IF?
]
] ;
my $input = [qw(3 + 4 is 8) ] ;
my $result = pat_match ($pattern, $input, {} ) ;
warn sprintf "IF_RETVAL2: *%s*", Data::Dumper::Dumper($result);
ok ($result eq ) ;
}
Download (0.006MB)
Added: 2007-07-12 License: Perl Artistic License Price:
836 downloads
Dino sequencer 0.2.2
Dino is a MIDI sequencer for GNU/Linux. more>>
Dino is a MIDI sequencer for GNU/Linux. Dino is a pattern-based sequencer, which means that you write small patterns of MIDI events that you can repeat and arrange to create a whole song.
Each track has its own patterns, so you can for example play the same drum pattern over and over again while you play different lead synth patterns and basslines.
The arrangement editor
The GUI is divided into three tabs. The first tab, "Arrangement" is where you
add new tracks, arrange patterns, and edit the tempo map. When you first
start Dino there will be no tracks and all you will see is the "BPM" track.
Here you can add new tempo changes with the left button, remove them with
the right button (except the first one - if you removed it the BPM for the
whole song would be undefined, so Dino will not let you remove it) and change
their BPM by middle-clicking and dragging up and down. This mousing pattern
is used in most places in Dino - left adds, middle modifies, right removes.
If you click the + button in the arrangement tab you will add a track. When
you add a track you can choose a name for it, which MIDI port it should connect
to, and the MIDI channel it should send events to. You can edit all these
properties later too by clicking the Properties button (the one with the
tool). The selected track (the one that has a dark blue background for its
name) can be removed by clicking the trashcan button.
Each track is shown as a strip of blocks, where each block represents a beat.
When you have created patterns for your track (see the text about the "Patterns"
tab below) you can use the left mouse button to click on a track and bring up
a popup menu listing all patterns for that track. The one you select will be
added to the track at the beat you clicked. You can modify its length with
the middle mouse button and delete it with the right (this does not affect
the actual pattern at all, just how this instance of it is played).
The pattern editor
In the pattern editor you can add, edit, and remove patterns for the different
tracks. Look at the tooltips for the buttons in the upper row and it should
be fairly obvious how to add and delete patterns. When you have added a pattern
you can also add and delete controllers in it. Controllers are e.g. pitchbend
and MIDI CC controllers. The active controller can be edited in the box at the
bottom of this tab.
The main box here is the note editor, where you edit the notes in the active
pattern. You add new notes with Ctrl-left button, change their length with the
middle button, change their velocity with Ctrl-middle button and delete them
with Ctrl-right button. You can also use the left mouse button to select,
unselect, and drag notes around - clicking a note will select it, shift-clicking
will unselect or select it depending on whether it was selected or not, clicking
and dragging notes will move the selected notes around on the grid.
There are also basic clipboard commands, you can cut, copy, paste and delete
the current selection. When you paste you will have to click where you want
the clipboard content to appear. You can also middle-click outside all notes to
insert a copy of the current selection there without affecting the clipboard
content.
The info editor
The third tab simply has entry fields for the songs title, author, and info. It should be obvious how to use them.
<<lessEach track has its own patterns, so you can for example play the same drum pattern over and over again while you play different lead synth patterns and basslines.
The arrangement editor
The GUI is divided into three tabs. The first tab, "Arrangement" is where you
add new tracks, arrange patterns, and edit the tempo map. When you first
start Dino there will be no tracks and all you will see is the "BPM" track.
Here you can add new tempo changes with the left button, remove them with
the right button (except the first one - if you removed it the BPM for the
whole song would be undefined, so Dino will not let you remove it) and change
their BPM by middle-clicking and dragging up and down. This mousing pattern
is used in most places in Dino - left adds, middle modifies, right removes.
If you click the + button in the arrangement tab you will add a track. When
you add a track you can choose a name for it, which MIDI port it should connect
to, and the MIDI channel it should send events to. You can edit all these
properties later too by clicking the Properties button (the one with the
tool). The selected track (the one that has a dark blue background for its
name) can be removed by clicking the trashcan button.
Each track is shown as a strip of blocks, where each block represents a beat.
When you have created patterns for your track (see the text about the "Patterns"
tab below) you can use the left mouse button to click on a track and bring up
a popup menu listing all patterns for that track. The one you select will be
added to the track at the beat you clicked. You can modify its length with
the middle mouse button and delete it with the right (this does not affect
the actual pattern at all, just how this instance of it is played).
The pattern editor
In the pattern editor you can add, edit, and remove patterns for the different
tracks. Look at the tooltips for the buttons in the upper row and it should
be fairly obvious how to add and delete patterns. When you have added a pattern
you can also add and delete controllers in it. Controllers are e.g. pitchbend
and MIDI CC controllers. The active controller can be edited in the box at the
bottom of this tab.
The main box here is the note editor, where you edit the notes in the active
pattern. You add new notes with Ctrl-left button, change their length with the
middle button, change their velocity with Ctrl-middle button and delete them
with Ctrl-right button. You can also use the left mouse button to select,
unselect, and drag notes around - clicking a note will select it, shift-clicking
will unselect or select it depending on whether it was selected or not, clicking
and dragging notes will move the selected notes around on the grid.
There are also basic clipboard commands, you can cut, copy, paste and delete
the current selection. When you paste you will have to click where you want
the clipboard content to appear. You can also middle-click outside all notes to
insert a copy of the current selection there without affecting the clipboard
content.
The info editor
The third tab simply has entry fields for the songs title, author, and info. It should be obvious how to use them.
Download (0.39MB)
Added: 2006-10-10 License: GPL (GNU General Public License) Price:
1109 downloads
XML::PatAct::ToObjects 0.08
XML::PatAct::ToObjects is an action module for creating Perl objects. more>>
XML::PatAct::ToObjects is an action module for creating Perl objects.
SYNOPSIS
use XML::PatAct::ToObjects;
my $patterns = [ PATTERN => [ OPTIONS ],
PATTERN => "PERL-CODE",
... ];
my $matcher = XML::PatAct::ToObjects->new( Patterns => $patterns,
Matcher => $matcher,
CopyId => 1,
CopyAttributes => 1 );
XML::PatAct::ToObjects is a PerlSAX handler for applying pattern-action lists to XML parses or trees. XML::PatAct::ToObjects creates Perl objects of the types and contents of the action items you define.
New XML::PatAct::ToObject instances are creating by calling `new(). Parameters can be passed as a list of key, value pairs or a hash. `new() requires the Patterns and Matcher parameters, the rest are optional:
Patterns
The pattern-action list to apply.
Matcher
An instance of the pattern or query matching module.
CopyId
Causes the `ID attribute, if any, in a source XML element to be copied to an `ID attribute in newly created objects. Note that IDs may be lost of no pattern matches that element or an object is not created (-make) for that element.
CopyAttributes
Causes all attributes of the element to be copied to the newly created objects.
Each action can either be a list of options defined below or a string containing a fragment of Perl code. If the action is a string of Perl code then simple then some simple substitutions are made as described further below.
<<lessSYNOPSIS
use XML::PatAct::ToObjects;
my $patterns = [ PATTERN => [ OPTIONS ],
PATTERN => "PERL-CODE",
... ];
my $matcher = XML::PatAct::ToObjects->new( Patterns => $patterns,
Matcher => $matcher,
CopyId => 1,
CopyAttributes => 1 );
XML::PatAct::ToObjects is a PerlSAX handler for applying pattern-action lists to XML parses or trees. XML::PatAct::ToObjects creates Perl objects of the types and contents of the action items you define.
New XML::PatAct::ToObject instances are creating by calling `new(). Parameters can be passed as a list of key, value pairs or a hash. `new() requires the Patterns and Matcher parameters, the rest are optional:
Patterns
The pattern-action list to apply.
Matcher
An instance of the pattern or query matching module.
CopyId
Causes the `ID attribute, if any, in a source XML element to be copied to an `ID attribute in newly created objects. Note that IDs may be lost of no pattern matches that element or an object is not created (-make) for that element.
CopyAttributes
Causes all attributes of the element to be copied to the newly created objects.
Each action can either be a list of options defined below or a string containing a fragment of Perl code. If the action is a string of Perl code then simple then some simple substitutions are made as described further below.
Download (0.031MB)
Added: 2006-09-15 License: Perl Artistic License Price:
1134 downloads
libqsearch 0.8
libqsearch provides an API for searching for a set of patterns. more>>
libqsearch is a C library aimed to search for set of patterns in buffers as fast as possible. It has also been ported to kernel space.
The idea is to have an API frontend that give you the ability to load plugins. Each plugin can provide one or more algorithms. Each algorithm can be instantiated to one or more search objects. Then you add patterns to the object (patterns can include (!), and can be case sensitive or not, include jokers, ..).
Then you compile it. The search object will then be able to search simultaneously every patterns (even of heterogeneous types) in a given buffer. One of the interests is the use of states to summarize a past search.
States are trivially implemented for automata based algorithms, and are not so hard to implement for other algorithms (if n is the longest pattern, just keep the n-1 last bytes in the state for the next search). This give you the ability to match patterns that overlap on 2 buffers without having to worry about that (TCP reassembly for IDSes is greatly simplified : no need to move paylods to adjacents zones, no need to keep a paylod in memory waiting for the next. Benefits for AV that work on flux could be great too).
This API is also implemented for linux kernels. For each algorithm, a wrapper is automatically generated for it to be compiled with the kernel. The API and the algorithms can also be compiled as LKM.
<<lessThe idea is to have an API frontend that give you the ability to load plugins. Each plugin can provide one or more algorithms. Each algorithm can be instantiated to one or more search objects. Then you add patterns to the object (patterns can include (!), and can be case sensitive or not, include jokers, ..).
Then you compile it. The search object will then be able to search simultaneously every patterns (even of heterogeneous types) in a given buffer. One of the interests is the use of states to summarize a past search.
States are trivially implemented for automata based algorithms, and are not so hard to implement for other algorithms (if n is the longest pattern, just keep the n-1 last bytes in the state for the next search). This give you the ability to match patterns that overlap on 2 buffers without having to worry about that (TCP reassembly for IDSes is greatly simplified : no need to move paylods to adjacents zones, no need to keep a paylod in memory waiting for the next. Benefits for AV that work on flux could be great too).
This API is also implemented for linux kernels. For each algorithm, a wrapper is automatically generated for it to be compiled with the kernel. The API and the algorithms can also be compiled as LKM.
Download (0.40MB)
Added: 2006-03-29 License: GPL (GNU General Public License) Price:
1304 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above simplicity sewing patterns search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed