lafcadio 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. data/lib/lafcadio.rb +32 -0
  2. data/lib/lafcadio.rb~ +32 -0
  3. data/lib/lafcadio/TestSuite.rb +16 -0
  4. data/lib/lafcadio/dateTime.rb +2 -0
  5. data/lib/lafcadio/dateTime/Month.rb +93 -0
  6. data/lib/lafcadio/domain.rb +119 -0
  7. data/lib/lafcadio/domain.rb~ +119 -0
  8. data/lib/lafcadio/domain/DomainObject.rb +375 -0
  9. data/lib/lafcadio/domain/DomainObject.rb~ +371 -0
  10. data/lib/lafcadio/domain/MapObject.rb +22 -0
  11. data/lib/lafcadio/domain/ObjectType.rb +80 -0
  12. data/lib/lafcadio/includer.rb +18 -0
  13. data/lib/lafcadio/mock.rb +2 -0
  14. data/lib/lafcadio/mock/MockDbBridge.rb +78 -0
  15. data/lib/lafcadio/mock/MockDbBridge.rb~ +74 -0
  16. data/lib/lafcadio/mock/MockObjectStore.rb +20 -0
  17. data/lib/lafcadio/objectField.rb +14 -0
  18. data/lib/lafcadio/objectField/AutoIncrementField.rb +25 -0
  19. data/lib/lafcadio/objectField/BooleanField.rb +83 -0
  20. data/lib/lafcadio/objectField/DateField.rb +33 -0
  21. data/lib/lafcadio/objectField/DateTimeField.rb +25 -0
  22. data/lib/lafcadio/objectField/DecimalField.rb +41 -0
  23. data/lib/lafcadio/objectField/EmailField.rb +28 -0
  24. data/lib/lafcadio/objectField/EnumField.rb +62 -0
  25. data/lib/lafcadio/objectField/FieldValueError.rb +4 -0
  26. data/lib/lafcadio/objectField/IntegerField.rb +15 -0
  27. data/lib/lafcadio/objectField/LinkField.rb +92 -0
  28. data/lib/lafcadio/objectField/LinkField.rb~ +86 -0
  29. data/lib/lafcadio/objectField/MoneyField.rb +13 -0
  30. data/lib/lafcadio/objectField/MonthField.rb +16 -0
  31. data/lib/lafcadio/objectField/ObjectField.rb +142 -0
  32. data/lib/lafcadio/objectField/PasswordField.rb +29 -0
  33. data/lib/lafcadio/objectField/StateField.rb +13 -0
  34. data/lib/lafcadio/objectField/SubsetLinkField.rb +25 -0
  35. data/lib/lafcadio/objectField/TextField.rb +23 -0
  36. data/lib/lafcadio/objectField/TextListField.rb +21 -0
  37. data/lib/lafcadio/objectField/TimeStampField.rb +15 -0
  38. data/lib/lafcadio/objectStore.rb +100 -0
  39. data/lib/lafcadio/objectStore/Cache.rb +81 -0
  40. data/lib/lafcadio/objectStore/Committer.rb +65 -0
  41. data/lib/lafcadio/objectStore/CouldntMatchObjectTypeError.rb +4 -0
  42. data/lib/lafcadio/objectStore/DbBridge.rb +140 -0
  43. data/lib/lafcadio/objectStore/DbBridge.rb~ +140 -0
  44. data/lib/lafcadio/objectStore/DomainComparable.rb +25 -0
  45. data/lib/lafcadio/objectStore/DomainObjectInitError.rb +9 -0
  46. data/lib/lafcadio/objectStore/DomainObjectNotFoundError.rb +4 -0
  47. data/lib/lafcadio/objectStore/DomainObjectProxy.rb +62 -0
  48. data/lib/lafcadio/objectStore/DomainObjectSqlMaker.rb +74 -0
  49. data/lib/lafcadio/objectStore/ObjectStore.rb +207 -0
  50. data/lib/lafcadio/objectStore/ObjectStore.rb~ +207 -0
  51. data/lib/lafcadio/objectStore/SqlValueConverter.rb +30 -0
  52. data/lib/lafcadio/objectStore/SqlValueConverter.rb~ +30 -0
  53. data/lib/lafcadio/query.rb +203 -0
  54. data/lib/lafcadio/query/Compare.rb +55 -0
  55. data/lib/lafcadio/query/CompoundCondition.rb +39 -0
  56. data/lib/lafcadio/query/Condition.rb +66 -0
  57. data/lib/lafcadio/query/Condition.rb~ +66 -0
  58. data/lib/lafcadio/query/Equals.rb +45 -0
  59. data/lib/lafcadio/query/In.rb +20 -0
  60. data/lib/lafcadio/query/Like.rb +48 -0
  61. data/lib/lafcadio/query/Link.rb +20 -0
  62. data/lib/lafcadio/query/Max.rb +32 -0
  63. data/lib/lafcadio/query/Max.rb~ +25 -0
  64. data/lib/lafcadio/query/Not.rb +21 -0
  65. data/lib/lafcadio/query/Query.rb +92 -0
  66. data/lib/lafcadio/schema.rb +2 -0
  67. data/lib/lafcadio/schema/CreateTableStatement.rb +61 -0
  68. data/lib/lafcadio/schema/CreateTableStatement.rb~ +59 -0
  69. data/lib/lafcadio/test.rb +2 -0
  70. data/lib/lafcadio/test/LafcadioTestCase.rb +17 -0
  71. data/lib/lafcadio/test/testconfig.dat +13 -0
  72. data/lib/lafcadio/util.rb +180 -0
  73. data/lib/lafcadio/util/Context.rb +61 -0
  74. data/lib/lafcadio/util/ContextualService.rb +33 -0
  75. data/lib/lafcadio/util/English.rb +117 -0
  76. data/lib/lafcadio/util/HashOfArrays.rb +48 -0
  77. data/lib/lafcadio/util/LafcadioConfig.rb +25 -0
  78. data/lib/lafcadio/util/QueueHash.rb +67 -0
  79. data/lib/lafcadio/util/UsStates.rb +29 -0
  80. data/lib/lafcadio/xml.rb +2 -0
  81. metadata +135 -0
@@ -0,0 +1,33 @@
1
+ require 'lafcadio/util/Context'
2
+
3
+ module Lafcadio
4
+ # A ContextualService is a service that is managed by the Context.
5
+ # ContextualServices are not instantiated normally. Instead, the instance of
6
+ # such a service may be retrieved by calling the method
7
+ # < class name >.get< class name >
8
+ #
9
+ # For example: ObjectStore.getObjectStore
10
+ class ContextualService
11
+ def ContextualService.method_missing(methodId)
12
+ methodName = methodId.id2name
13
+ if methodName =~ /^get.*/
14
+ Context.instance.send(methodName)
15
+ else
16
+ super methodId
17
+ end
18
+ end
19
+
20
+ # The +passKey+ needs to be the Context instance, or else this method fails.
21
+ # Note that this isn't hard security of any kind; it's simply a gentle
22
+ # reminder to users of a ContextualService that the class should not be
23
+ # instantiated directly.
24
+ def initialize(passKey)
25
+ if passKey.class != Context
26
+ raise ArgumentError,
27
+ "#{ self.class.name.to_s } should only be instantiated by a " +
28
+ "Context",
29
+ caller
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,117 @@
1
+ module Lafcadio
2
+ # A collection of English-language specific utility methods.
3
+ class English
4
+ # Turns a camel-case string ("camelCaseToEnglish") to plain English ("camel
5
+ # case to english"). Each word is decapitalized.
6
+ def English.camelCaseToEnglish(camelCaseStr)
7
+ words = []
8
+ nextCapIndex =(camelCaseStr =~ /[A-Z]/)
9
+ while nextCapIndex != nil
10
+ words << $` if $`.size > 0
11
+ camelCaseStr = $& + $'
12
+ camelCaseStr[0] = camelCaseStr[0..0].downcase
13
+ nextCapIndex =(camelCaseStr =~ /[A-Z]/)
14
+ end
15
+ words << camelCaseStr
16
+ words.join ' '
17
+ end
18
+
19
+ # Given a format for a template sentence, generates the sentence while
20
+ # accounting for details such as pluralization and whether to use "a" or
21
+ # "an".
22
+ # [format] The format string. Format codes are:
23
+ # * %num: Number
24
+ # * %is: Transitive verb. This will be turned into "is" or "are",
25
+ # depending on <tt>number</tt>.
26
+ # * %nam: Name. This will be rendered as either singular or
27
+ # plural, depending on <tt>number</tt>.
28
+ # * %a: Indefinite article. This will be turned into "a" or "an",
29
+ # depending on <tt>name</tt>.
30
+ # [name] The name of the object being described.
31
+ # [number] The number of the objects being describes.
32
+ #
33
+ # Examples:
34
+ # English.sentence("There %is currently %num %nam", "product category",
35
+ # 0) -> "There are currently 0 product categories"
36
+ # English.sentence("There %is currently %num %nam", "product category",
37
+ # 1) -> "There is currently 1 product category"
38
+ # English.sentence("Add %a %nam", "invoice") -> "Add an invoice"
39
+ def English.sentence(format, name, number = 1)
40
+ sentence = format
41
+ sentence.gsub!( /%num/, number.to_s )
42
+ isVerb = number == 1 ? "is" : "are"
43
+ sentence.gsub!( /%is/, isVerb )
44
+ name = English.plural name if number != 1
45
+ sentence.gsub!( /%nam/, name )
46
+ article = startsWithVowelSound(name) ? 'an' : 'a'
47
+ sentence.gsub!( /%a/, article )
48
+ sentence
49
+ end
50
+
51
+ # Does this word start with a vowel sound? "User" and "usury" don't, but
52
+ # "ugly" does.
53
+ def English.startsWithVowelSound(word)
54
+ uSomethingUMatch = word =~ /^u[^aeiuo][aeiou]/
55
+ # 'user' and 'usury' don't start with a vowel sound
56
+ word =~ /^[aeiou]/ && !uSomethingUMatch
57
+ end
58
+
59
+ # Given a singular noun, returns the plural form.
60
+ def English.plural(singular)
61
+ consonantYPattern = Regexp.new("([^aeiou])y$", Regexp::IGNORECASE)
62
+ if singular =~ consonantYPattern
63
+ singular.gsub consonantYPattern, '\1ies'
64
+ elsif singular =~ /[xs]$/
65
+ singular + "es"
66
+ else
67
+ singular + "s"
68
+ end
69
+ end
70
+
71
+ # Returns the proper noun form of a string by capitalizing most of the
72
+ # words.
73
+ #
74
+ # Examples:
75
+ # English.properNoun("bosnia and herzegovina") ->
76
+ # "Bosnia and Herzegovina"
77
+ # English.properNoun("macedonia, the former yugoslav republic of") ->
78
+ # "Macedonia, the Former Yugoslav Republic of"
79
+ # English.properNoun("virgin islands, u.s.") ->
80
+ # "Virgin Islands, U.S."
81
+ def English.properNoun(string)
82
+ properNoun = ""
83
+ while(matchIndex = string =~ /[\. ]/)
84
+ word = string[0..matchIndex-1]
85
+ word = word.capitalize unless [ 'and', 'the', 'of' ].index(word) != nil
86
+ properNoun += word + $&
87
+ string = string[matchIndex+1..string.length]
88
+ end
89
+ word = string
90
+ word = word.capitalize unless [ 'and', 'the', 'of' ].index(word) != nil
91
+ properNoun += word
92
+ properNoun
93
+ end
94
+
95
+ # Given a noun in plural form, returns its singular version.
96
+ def English.singular(plural)
97
+ if plural =~ /(.*)ies/
98
+ $1 + 'y'
99
+ elsif plural =~ /(.*s)es/
100
+ $1
101
+ else
102
+ plural =~ /(.*)s/
103
+ $1
104
+ end
105
+ end
106
+
107
+ # Turns an English language string into camel case.
108
+ def English.englishToCamelCase(englishStr)
109
+ cc = ""
110
+ englishStr.split.each { |word|
111
+ word = word.capitalize unless cc == ''
112
+ cc = cc += word
113
+ }
114
+ cc
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,48 @@
1
+ module Lafcadio
2
+ class HashOfArrays #:nodoc:
3
+ def initialize
4
+ @values = {}
5
+ end
6
+
7
+ def set(key, array)
8
+ raise "HashOfArrays.[]= needs a value of type Array" if array.class != Array
9
+ @values[key] = array
10
+ end
11
+
12
+ def []=(key, array)
13
+ set key, array
14
+ end
15
+
16
+ def getArray(key)
17
+ array = @values[key]
18
+ if array == nil
19
+ array = []
20
+ @values[key] = array
21
+ end
22
+ array
23
+ end
24
+
25
+ def get(key)
26
+ array = @values[key]
27
+ array != nil ? array[0] : nil
28
+ end
29
+
30
+ def [](key)
31
+ getArray key
32
+ end
33
+
34
+ def values
35
+ values = []
36
+ @values.values.each { |val| values << val[0] }
37
+ values
38
+ end
39
+
40
+ def keys
41
+ @values.keys
42
+ end
43
+
44
+ def each
45
+ @values.each { |key, array| yield key, array }
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,25 @@
1
+ module Lafcadio
2
+ # LafcadioConfig is a Hash that takes its data from the config file. You'll
3
+ # have to set the location of that file before using it: Use
4
+ # LafcadioConfig.setFilename.
5
+ #
6
+ # LafcadioConfig expects its data to be colon-delimited, one key-value pair
7
+ # to a line. For example:
8
+ # dbuser:user
9
+ # dbpassword:password
10
+ # dbname:lafcadio_test
11
+ # dbhost:localhost
12
+ class LafcadioConfig < Hash
13
+ def LafcadioConfig.setFilename(filename)
14
+ @@filename = filename
15
+ end
16
+
17
+ def initialize
18
+ file = File.new @@filename
19
+ file.each_line { |line|
20
+ line.chomp =~ /^(.*?):(.*)$/
21
+ self[$1] = $2
22
+ }
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,67 @@
1
+ module Lafcadio
2
+ # An ordered hash: Keys are ordered according to when they were inserted.
3
+ class QueueHash
4
+ # Creates a QueueHash with all the elements in <tt>array</tt> as keys, and
5
+ # each value initially set to be the same as the corresponding key.
6
+ def QueueHash.newFromArray(array)
7
+ valueArray = []
8
+ array.each { |elt|
9
+ valueArray << elt
10
+ valueArray << elt
11
+ }
12
+ new(*valueArray)
13
+ end
14
+
15
+ # Takes an even number of arguments, and sets each odd-numbered argument to
16
+ # correspond to the argument immediately afterward. For example:
17
+ # queueHash = QueueHash.new (1, 2, 3, 4)
18
+ # queueHash[1] => 2
19
+ # queueHash[3] => 4
20
+ def initialize(*values)
21
+ @pairs = []
22
+ 0.step(values.size-1, 2) { |i| @pairs << [ values[i], values[i+1] ] }
23
+ end
24
+
25
+ def keys
26
+ keys = []
27
+ @pairs.each { |pair| keys << pair[0] }
28
+ keys
29
+ end
30
+
31
+ def values
32
+ values = []
33
+ @pairs.each { |pair| values << pair[1] }
34
+ values
35
+ end
36
+
37
+ def [](key)
38
+ value = nil
39
+ @pairs.each { |pair| value = pair[1] if pair[0] == key }
40
+ value
41
+ end
42
+
43
+ def size
44
+ @pairs.size
45
+ end
46
+
47
+ def []=(key, value)
48
+ @pairs << [key, value]
49
+ end
50
+
51
+ def each
52
+ @pairs.each { |pair| yield pair[0], pair[1] }
53
+ end
54
+
55
+ def ==( otherObj )
56
+ if otherObj.class == QueueHash && otherObj.size == size
57
+ match = true
58
+ (0...size).each { |i|
59
+ match &&= keys[i] == otherObj.keys[i] && values[i] == otherObj.values[i]
60
+ }
61
+ match
62
+ else
63
+ false
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,29 @@
1
+ module Lafcadio
2
+ class UsStates
3
+ # Returns a QueueHash of states, with two-letter postal codes as keys and
4
+ # state names as values.
5
+ def UsStates.states
6
+ require 'lafcadio/util/QueueHash'
7
+ QueueHash.new( 'AL', 'Alabama', 'AK', 'Alaska', 'AZ', 'Arizona',
8
+ 'AR', 'Arkansas', 'CA', 'California', 'CO', 'Colorado',
9
+ 'CT', 'Connecticut', 'DE', 'Delaware',
10
+ 'DC', 'District of Columbia', 'FL', 'Florida',
11
+ 'GA', 'Georgia', 'HI', 'Hawaii', 'ID', 'Idaho',
12
+ 'IL', 'Illinois', 'IN', 'Indiana', 'IA', 'Iowa',
13
+ 'KS', 'Kansas', 'KY', 'Kentucky', 'LA', 'Louisiana',
14
+ 'ME', 'Maine', 'MD', 'Maryland', 'MA', 'Massachusetts',
15
+ 'MI', 'Michigan', 'MN', 'Minnesota', 'MS', 'Mississippi',
16
+ 'MO', 'Missouri', 'MT', 'Montana', 'NE', 'Nebraska',
17
+ 'NV', 'Nevada', 'NH', 'New Hampshire',
18
+ 'NJ', 'New Jersey', 'NM', 'New Mexico', 'NY', 'New York',
19
+ 'NC', 'North Carolina', 'ND', 'North Dakota',
20
+ 'OH', 'Ohio', 'OK', 'Oklahoma', 'OR', 'Oregon',
21
+ 'PA', 'Pennsylvania', 'PR', 'Puerto Rico',
22
+ 'RI', 'Rhode Island', 'SC', 'South Carolina',
23
+ 'SD', 'South Dakota', 'TN', 'Tennessee', 'TX', 'Texas',
24
+ 'UT', 'Utah', 'VT', 'Vermont', 'VA', 'Virginia',
25
+ 'WA', 'Washington', 'WV', 'West Virginia',
26
+ 'WI', 'Wisconsin', 'WY', 'Wyoming' )
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,2 @@
1
+ require 'lafcadio/includer'
2
+ Includer.include( 'xml' )
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.1
3
+ specification_version: 1
4
+ name: lafcadio
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.4.3
7
+ date: 2004-12-01
8
+ summary: Lafcadio is an object-relational mapping layer
9
+ require_paths:
10
+ - lib
11
+ author: Francis Hwang
12
+ email: sera@fhwang.net
13
+ homepage: http://lafcadio.rubyforge.org/
14
+ rubyforge_project:
15
+ description:
16
+ autorequire: lafcadio
17
+ default_executable:
18
+ bindir: bin
19
+ has_rdoc: false
20
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
21
+ requirements:
22
+ -
23
+ - ">"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.0.0
26
+ version:
27
+ platform: ruby
28
+ files:
29
+ - lib/lafcadio
30
+ - lib/lafcadio.rb
31
+ - lib/lafcadio.rb~
32
+ - lib/lafcadio/dateTime
33
+ - lib/lafcadio/dateTime.rb
34
+ - lib/lafcadio/domain
35
+ - lib/lafcadio/domain.rb
36
+ - lib/lafcadio/domain.rb~
37
+ - lib/lafcadio/includer.rb
38
+ - lib/lafcadio/mock
39
+ - lib/lafcadio/mock.rb
40
+ - lib/lafcadio/objectField
41
+ - lib/lafcadio/objectField.rb
42
+ - lib/lafcadio/objectStore
43
+ - lib/lafcadio/objectStore.rb
44
+ - lib/lafcadio/query
45
+ - lib/lafcadio/query.rb
46
+ - lib/lafcadio/schema
47
+ - lib/lafcadio/schema.rb
48
+ - lib/lafcadio/test
49
+ - lib/lafcadio/test.rb
50
+ - lib/lafcadio/TestSuite.rb
51
+ - lib/lafcadio/util
52
+ - lib/lafcadio/util.rb
53
+ - lib/lafcadio/xml.rb
54
+ - lib/lafcadio/dateTime/Month.rb
55
+ - lib/lafcadio/domain/DomainObject.rb
56
+ - lib/lafcadio/domain/DomainObject.rb~
57
+ - lib/lafcadio/domain/MapObject.rb
58
+ - lib/lafcadio/domain/ObjectType.rb
59
+ - lib/lafcadio/mock/MockDbBridge.rb
60
+ - lib/lafcadio/mock/MockDbBridge.rb~
61
+ - lib/lafcadio/mock/MockObjectStore.rb
62
+ - lib/lafcadio/objectField/AutoIncrementField.rb
63
+ - lib/lafcadio/objectField/BooleanField.rb
64
+ - lib/lafcadio/objectField/DateField.rb
65
+ - lib/lafcadio/objectField/DateTimeField.rb
66
+ - lib/lafcadio/objectField/DecimalField.rb
67
+ - lib/lafcadio/objectField/EmailField.rb
68
+ - lib/lafcadio/objectField/EnumField.rb
69
+ - lib/lafcadio/objectField/FieldValueError.rb
70
+ - lib/lafcadio/objectField/IntegerField.rb
71
+ - lib/lafcadio/objectField/LinkField.rb
72
+ - lib/lafcadio/objectField/LinkField.rb~
73
+ - lib/lafcadio/objectField/MoneyField.rb
74
+ - lib/lafcadio/objectField/MonthField.rb
75
+ - lib/lafcadio/objectField/ObjectField.rb
76
+ - lib/lafcadio/objectField/PasswordField.rb
77
+ - lib/lafcadio/objectField/StateField.rb
78
+ - lib/lafcadio/objectField/SubsetLinkField.rb
79
+ - lib/lafcadio/objectField/TextField.rb
80
+ - lib/lafcadio/objectField/TextListField.rb
81
+ - lib/lafcadio/objectField/TimeStampField.rb
82
+ - lib/lafcadio/objectStore/Cache.rb
83
+ - lib/lafcadio/objectStore/Committer.rb
84
+ - lib/lafcadio/objectStore/CouldntMatchObjectTypeError.rb
85
+ - lib/lafcadio/objectStore/DbBridge.rb
86
+ - lib/lafcadio/objectStore/DbBridge.rb~
87
+ - lib/lafcadio/objectStore/DomainComparable.rb
88
+ - lib/lafcadio/objectStore/DomainObjectInitError.rb
89
+ - lib/lafcadio/objectStore/DomainObjectNotFoundError.rb
90
+ - lib/lafcadio/objectStore/DomainObjectProxy.rb
91
+ - lib/lafcadio/objectStore/DomainObjectSqlMaker.rb
92
+ - lib/lafcadio/objectStore/ObjectStore.rb
93
+ - lib/lafcadio/objectStore/ObjectStore.rb~
94
+ - lib/lafcadio/objectStore/SqlValueConverter.rb
95
+ - lib/lafcadio/objectStore/SqlValueConverter.rb~
96
+ - lib/lafcadio/query/Compare.rb
97
+ - lib/lafcadio/query/CompoundCondition.rb
98
+ - lib/lafcadio/query/Condition.rb
99
+ - lib/lafcadio/query/Condition.rb~
100
+ - lib/lafcadio/query/Equals.rb
101
+ - lib/lafcadio/query/In.rb
102
+ - lib/lafcadio/query/Like.rb
103
+ - lib/lafcadio/query/Link.rb
104
+ - lib/lafcadio/query/Max.rb
105
+ - lib/lafcadio/query/Max.rb~
106
+ - lib/lafcadio/query/Not.rb
107
+ - lib/lafcadio/query/Query.rb
108
+ - lib/lafcadio/schema/CreateTableStatement.rb
109
+ - lib/lafcadio/schema/CreateTableStatement.rb~
110
+ - lib/lafcadio/test/LafcadioTestCase.rb
111
+ - lib/lafcadio/test/testconfig.dat
112
+ - lib/lafcadio/util/Context.rb
113
+ - lib/lafcadio/util/ContextualService.rb
114
+ - lib/lafcadio/util/English.rb
115
+ - lib/lafcadio/util/HashOfArrays.rb
116
+ - lib/lafcadio/util/LafcadioConfig.rb
117
+ - lib/lafcadio/util/QueueHash.rb
118
+ - lib/lafcadio/util/UsStates.rb
119
+ test_files: []
120
+ rdoc_options: []
121
+ extra_rdoc_files: []
122
+ executables: []
123
+ extensions: []
124
+ requirements: []
125
+ dependencies:
126
+ - !ruby/object:Gem::Dependency
127
+ name: log4r
128
+ version_requirement:
129
+ version_requirements: !ruby/object:Gem::Version::Requirement
130
+ requirements:
131
+ -
132
+ - ">"
133
+ - !ruby/object:Gem::Version
134
+ version: 0.0.0
135
+ version: