-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Changed the behavior of the given/when method; now it calls '~~' in…
…stead of '==' - Added the given/exact method which calls '==' internally. - given/> now points to given/exact - given/~ now points to given/when Example: given("hello") when("e") { say "when"; continue } # true ("hello" contains "e") when(/^he/) { say "when2"; continue } # true ("hello" matches /^he/) exact("hello") { say "exact"; continue } # true ("hello" == "hello") - Improved the smart-match operator (~~) to make a finall '==' call before returning false.
- Loading branch information
trizen
committed
Sep 15, 2015
1 parent
7fd6816
commit ceecf82
Showing
7 changed files
with
97 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#!/usr/bin/ruby | ||
|
||
# | ||
## http://rosettacode.org/wiki/Read_a_configuration_file | ||
# | ||
|
||
var fullname = (var favouritefruit = ""); | ||
var needspeeling = (var seedsremoved = false); | ||
var otherfamily = []; | ||
|
||
DATA.each { |line| | ||
var(key, value) = line.strip.split(/\h+/, 2)...; | ||
|
||
given(key) | ||
~ /^([#;]|\h*$)/ { } | ||
> "FULLNAME" { fullname = value } | ||
> "FAVOURITEFRUIT" { favouritefruit = value } | ||
> "NEEDSPEELING" { needspeeling = true } | ||
> "SEEDSREMOVED" { seedsremoved = true } | ||
> "OTHERFAMILY" { otherfamily = value.split(',')»strip»() } | ||
~ /^./ { say "#{key}: unknown key" } | ||
; | ||
} | ||
|
||
say "fullname = #{fullname}"; | ||
say "favouritefruit = #{favouritefruit}"; | ||
say "needspeeling = #{needspeeling}"; | ||
say "seedsremoved = #{seedsremoved}"; | ||
|
||
otherfamily.each_with_index {|i, name| | ||
say "otherfamily(#{i+1}) = #{name}"; | ||
}; | ||
|
||
assert_eq(fullname, 'Foo Barber'); | ||
assert_eq(favouritefruit, 'banana'); | ||
assert_eq(needspeeling, true); | ||
assert_eq(seedsremoved, false); | ||
assert_eq(otherfamily[0], 'Rhu Barber'); | ||
assert_eq(otherfamily[1], 'Harry Barber'); | ||
|
||
__DATA__ | ||
# This is a configuration file in standard configuration file format | ||
# | ||
# Lines beginning with a hash or a semicolon are ignored by the application | ||
# program. Blank lines are also ignored by the application program. | ||
|
||
# This is the fullname parameter | ||
FULLNAME Foo Barber | ||
|
||
# This is a favourite fruit | ||
FAVOURITEFRUIT banana | ||
|
||
# This is a boolean that should be set | ||
NEEDSPEELING | ||
|
||
# This boolean is commented out | ||
; SEEDSREMOVED | ||
|
||
# Configuration option names are not case sensitive, but configuration parameter | ||
# data is case sensitive and may be preserved by the application program. | ||
|
||
# An optional equals sign can be used to separate configuration parameter data | ||
# from the option name. This is dropped by the parser. | ||
|
||
# A configuration option may take multiple parameters separated by commas. | ||
# Leading and trailing whitespace around parameter names and parameter data fields | ||
# are ignored by the application program. | ||
|
||
OTHERFAMILY Rhu Barber, Harry Barber |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters