ydl 0.2.06

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 (60) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +83 -0
  7. data/README.org +208 -0
  8. data/Rakefile +6 -0
  9. data/bin/console +11 -0
  10. data/bin/setup +8 -0
  11. data/examples/brief.tex +43 -0
  12. data/examples/cases.ydl +79 -0
  13. data/examples/header.rb +12 -0
  14. data/examples/lawyers.ydl +65 -0
  15. data/examples/mwe.tex +67 -0
  16. data/examples/persons.ydl +10 -0
  17. data/examples/simple.tex +23 -0
  18. data/examples/test_page.tex +76 -0
  19. data/lib/ydl/core_ext/array.rb +6 -0
  20. data/lib/ydl/core_ext/array_refine.rb +16 -0
  21. data/lib/ydl/core_ext/boolean.rb +13 -0
  22. data/lib/ydl/core_ext/date.rb +6 -0
  23. data/lib/ydl/core_ext/hash.rb +16 -0
  24. data/lib/ydl/core_ext/numeric.rb +6 -0
  25. data/lib/ydl/core_ext/string.rb +16 -0
  26. data/lib/ydl/core_ext.rb +7 -0
  27. data/lib/ydl/errors.rb +5 -0
  28. data/lib/ydl/node.rb +190 -0
  29. data/lib/ydl/top_queue.rb +40 -0
  30. data/lib/ydl/tree.rb +95 -0
  31. data/lib/ydl/version.rb +3 -0
  32. data/lib/ydl/ydl.rb +244 -0
  33. data/lib/ydl.rb +15 -0
  34. data/spec/array_spec.rb +14 -0
  35. data/spec/core_ext/array_spec.rb +23 -0
  36. data/spec/core_ext/boolean_spec.rb +10 -0
  37. data/spec/core_ext/date_spec.rb +9 -0
  38. data/spec/core_ext/hash_spec.rb +19 -0
  39. data/spec/core_ext/numeric_spec.rb +13 -0
  40. data/spec/core_ext/string_spec.rb +27 -0
  41. data/spec/example_files/err/person_err.ydl +6 -0
  42. data/spec/example_files/home/user/.ydl/config_template.yaml +40 -0
  43. data/spec/example_files/home/user/.ydl/courts/courts.ydl +28 -0
  44. data/spec/example_files/home/user/.ydl/lawyers.ydl +40 -0
  45. data/spec/example_files/home/user/.ydl/persons.ydl +9 -0
  46. data/spec/example_files/home/user/project/cases.ydl +59 -0
  47. data/spec/example_files/home/user/project/courts.ydl +7 -0
  48. data/spec/example_files/home/user/project/judges.ydl +27 -0
  49. data/spec/example_files/home/user/project/lawyers.ydl +52 -0
  50. data/spec/example_files/home/user/project/persons.ydl +5 -0
  51. data/spec/example_files/home/user/project/subproject/lawyers.ydl +85 -0
  52. data/spec/example_files/home/user/project/subproject/persons.ydl +55 -0
  53. data/spec/example_files/sys/ydl/constants.ydl +1 -0
  54. data/spec/example_files/sys/ydl/junk.ydl +1 -0
  55. data/spec/spec_helper.rb +55 -0
  56. data/spec/ydl_error_spec.rb +15 -0
  57. data/spec/ydl_spec.rb +184 -0
  58. data/yaml_v_psych.rb +15 -0
  59. data/ydl.gemspec +40 -0
  60. metadata +230 -0
@@ -0,0 +1,85 @@
1
+ # This is a comment
2
+ ded:
3
+ address:
4
+ street:
5
+ - Commerce Plaza I
6
+ - 7300 W. 110th Street, Suite 930
7
+ phone: 913-488-3342
8
+ bar_numbers:
9
+ NY: "DD-2145"
10
+
11
+ rjones:
12
+ sex: male
13
+ last: Jones
14
+ first: Robert
15
+ middle: G.
16
+ address:
17
+ street:
18
+ - Ropes & Gray LLP
19
+ - 800 Boylston Street
20
+ city: Boston
21
+ state: MA
22
+ zip: "02199"
23
+ phone: 617-951-7000
24
+ fax: 617-951-7050
25
+ email: robert.jones@ropesgray.com
26
+
27
+ mcrisp:
28
+ sex: male
29
+ last: Crisp
30
+ first: Martin
31
+ middle: J.
32
+ address:
33
+ street:
34
+ - Ropes & Gray LLP
35
+ - 1211 Avenue of the Americas
36
+ city: New York
37
+ state: NY
38
+ zip: "10036-8704"
39
+ phone: 212-596-9000
40
+ fax: 212-596-9090
41
+ email: martin.crisp@ropesgray.com
42
+
43
+ tfarrell:
44
+ sex: male
45
+ last: Farrell
46
+ first: Timothy
47
+ middle: R.
48
+ address:
49
+ street:
50
+ - Ropes & Gray LLP
51
+ - 191 North Wacker Drive, 32nd Floor
52
+ city: Chicago
53
+ state: IL
54
+ zip: "60606"
55
+ phone: 312-845-1209
56
+ fax: 312-845-5569
57
+ email: Timothy.Farrell@ropesgray.com
58
+
59
+ dclarke:
60
+ sex: male
61
+ last: Clarke
62
+ first: David
63
+ address:
64
+ street:
65
+ - DLA Piper LLP (US)
66
+ - 1251 Avenue of the Americas
67
+ city: New York
68
+ state: NY
69
+ zip: "10020"
70
+ phone: 212-335-4500
71
+ email: john.clarke@dlapiper.com
72
+
73
+ jclarke:
74
+ sex: male
75
+ last: Clarke
76
+ first: David
77
+ address:
78
+ street:
79
+ - DLA Piper LLP (US)
80
+ - 500 Eighth Street NW
81
+ city: Washington
82
+ state: DC
83
+ zip: "20004"
84
+ phone: 202-799-4000
85
+ email: david.clarke@dlapiper.com
@@ -0,0 +1,55 @@
1
+ zmpef1:
2
+ sex: entity
3
+ name: ZM Private Equity Fund I, L.P.
4
+ address:
5
+ street:
6
+ - c/o Corporation Service Company
7
+ - 2711 Centerville Rd, Suite 400
8
+ city: Wilmington
9
+ state: DE
10
+ zip: '19808'
11
+
12
+ zmpef2:
13
+ sex: entity
14
+ name: ZM Private Equity Fund II, L.P.
15
+ address:
16
+ street:
17
+ - c/o Corporation Service Company
18
+ - 2711 Centerville Rd, Suite 400
19
+ city: Wilmington
20
+ state: DE
21
+ zip: '19808'
22
+
23
+ morgan:
24
+ sex: male
25
+ first: Quinn
26
+ last: Morgan
27
+ address:
28
+ street:
29
+ - 60 East 42nd Street
30
+ - Suite 1400
31
+ city: New York
32
+ state: NY
33
+ zip: 10165
34
+
35
+ erickson:
36
+ sex: entity
37
+ name: Erickson Incorporated
38
+ address:
39
+ street:
40
+ - c/o The Corporation Trust Company
41
+ - Corporation Trust Center, 1209 Orange Street
42
+ city: Wilmington
43
+ state: DE
44
+ zip: '19801'
45
+
46
+ zmeac:
47
+ sex: entity
48
+ name: ZM EAC LLC
49
+ address:
50
+ street:
51
+ - 60 East 42nd Street
52
+ - Suite 1400
53
+ city: New York
54
+ state: NY
55
+ zip: 10165
@@ -0,0 +1 @@
1
+ pi: 3.14159
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,55 @@
1
+ require 'bundler/setup'
2
+ require 'ydl'
3
+
4
+ require 'pry'
5
+ require 'debug'
6
+
7
+ RSpec.configure do |config|
8
+ # Enable flags like --only-failures and --next-failure
9
+ config.example_status_persistence_file_path = ".rspec_status"
10
+
11
+ config.expect_with :rspec do |c|
12
+ c.syntax = :expect
13
+ end
14
+
15
+ # The following sets up a mock-up of a file system to use for testing under
16
+ # the project's spec/example_files directory. It copies the configuration
17
+ # template file to a configuration file that changes where the system ydl
18
+ # directory is to be found.
19
+ begin_cwd = Dir.pwd
20
+ begin_home = ENV['HOME']
21
+ spec_sys_dir = File.join(__dir__, 'example_files', 'sys')
22
+ spec_home_dir = File.join(__dir__, 'example_files', 'home', 'user')
23
+ spec_project_dir = File.join(spec_home_dir, 'project', 'subproject')
24
+ cfg_template = File.join(spec_home_dir, '.ydl', 'config_template.yaml')
25
+ cfg_file = File.join(spec_home_dir, '.ydl', 'config.yaml')
26
+
27
+ config.before(:suite) do
28
+ # FileUtils.cp_r(spec_sys_dir, tmp_dir)
29
+ FileUtils.cp(cfg_template, cfg_file)
30
+ File.open(cfg_file, 'a') do |f|
31
+ cfg_line = <<-EOS
32
+
33
+ system_ydl_dir: #{spec_sys_dir}
34
+
35
+ EOS
36
+ f.write(cfg_line)
37
+ end
38
+ ENV['HOME'] = spec_home_dir
39
+ ENV['YDL_CONFIG_FILE'] = cfg_file
40
+ Dir.chdir(spec_project_dir)
41
+ end
42
+
43
+ config.after(:suite) do
44
+ FileUtils.rm_rf(cfg_file)
45
+ # FileUtils.rm_rf(tmp_sys)
46
+ ENV['HOME'] = begin_home
47
+ Dir.chdir(begin_cwd)
48
+ end
49
+
50
+ config.before(:suite) do
51
+ @save_err = $stderr
52
+ @err = File.new(File.join(__dir__, 'error.out'), 'w', textmode: true)
53
+ $stderr = @err
54
+ end
55
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Ydl do
4
+ before :all do
5
+ require 'law_doc'
6
+ end
7
+
8
+ describe 'load ydl_file with errors' do
9
+ it 'shows file where error occurred' do
10
+ expect {
11
+ Ydl.load_file('../../../../err/person_err.ydl')
12
+ }.to raise_error Ydl::UserError, /person_err.*line.*column/
13
+ end
14
+ end
15
+ end
data/spec/ydl_spec.rb ADDED
@@ -0,0 +1,184 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Ydl do
4
+ before :all do
5
+ require 'law_doc'
6
+ end
7
+
8
+ it 'has a version number' do
9
+ expect(Ydl::VERSION).not_to be nil
10
+ end
11
+
12
+ describe 'ydl_files' do
13
+ it 'finds all ydl files' do
14
+ ydls = Ydl.ydl_files
15
+ expect(ydls.size).to be > 5
16
+ # The last element ought to contain the name of the cwd.
17
+ expect(ydls.last).to match(/subproject/)
18
+ end
19
+
20
+ it 'can ignore ydl files by string' do
21
+ all_ydls = Ydl.ydl_files
22
+ some_ydls = Ydl.ydl_files(ignore: 'lawyers')
23
+ expect(all_ydls.size).to be > some_ydls.size
24
+ expect(all_ydls.any? { |n| n =~ /lawyer/ }).to be true
25
+ expect(some_ydls.any? { |n| n =~ /lawyer/ }).to be false
26
+ expect((all_ydls - some_ydls).all? { |n| n =~ /lawyer/ }).to be true
27
+ end
28
+
29
+ it 'can ignore ydl files by regexp' do
30
+ all_ydls = Ydl.ydl_files
31
+ some_ydls = Ydl.ydl_files(ignore: /law/)
32
+ expect(all_ydls.size).to be > some_ydls.size
33
+ expect(all_ydls.any? { |n| n =~ /lawyer/ }).to be true
34
+ expect(some_ydls.any? { |n| n =~ /lawyer/ }).to be false
35
+ expect((all_ydls - some_ydls).all? { |n| n =~ /lawyer/ }).to be true
36
+ end
37
+
38
+ it 'can ignore ydl files by array of string and regexp' do
39
+ all_ydls = Ydl.ydl_files
40
+ some_ydls = Ydl.ydl_files(ignore: ['courts', /law/])
41
+ expect(all_ydls.size).to be > some_ydls.size
42
+ expect(all_ydls.any? { |n| n =~ /lawyer|court/ }).to be true
43
+ expect(some_ydls.any? { |n| n =~ /lawyer|court/ }).to be false
44
+ expect((all_ydls - some_ydls).all? { |n| n =~ /lawyer|court/ }).to be true
45
+ end
46
+ end
47
+
48
+ describe 'class instantiation' do
49
+ it 'should be able to find candidate classes within any module' do
50
+ cnds = Ydl.candidate_classes(:set)
51
+ expect(cnds.size).to be > 3
52
+ expect(cnds).to include(Set)
53
+ expect(cnds).to include(Psych::Set)
54
+ expect(cnds).to include(RSpec::Core::Set)
55
+ end
56
+
57
+ it 'should be able to find candidate classes within modules as string' do
58
+ cnds = Ydl.candidate_classes(:set, 'Psych')
59
+ expect(cnds.size).to eq(1)
60
+ expect(cnds).to include(Psych::Set)
61
+
62
+ cnds = Ydl.candidate_classes(:set, ',Psych, RSpec::Core')
63
+ expect(cnds.size).to eq(3)
64
+ expect(cnds).to include(Set)
65
+ expect(cnds).to include(Psych::Set)
66
+ expect(cnds).to include(RSpec::Core::Set)
67
+ end
68
+
69
+ it 'should find candidate_classes with modules as array' do
70
+ cnds = Ydl.candidate_classes(:set, ['', 'Psych'])
71
+ expect(cnds.size).to eq(2)
72
+ expect(cnds).to include(Set)
73
+ expect(cnds).to include(Psych::Set)
74
+ end
75
+
76
+ it 'should know how to map keys to classes' do
77
+ Ydl.read_config
78
+ expect(Ydl.class_map(:persons)).to eq(LawDoc::Person)
79
+ expect(Ydl.class_map(:address)).to eq(LawDoc::Address)
80
+ expect(Ydl.class_map(:junk)).to be nil
81
+ end
82
+
83
+ it 'should know init method for classes' do
84
+ Ydl.read_config
85
+ # expect(Ydl.class_init('LawDoc::Person')).to eq(:from_hash)
86
+ expect(Ydl.class_init('LawDoc::Address')).to eq(:new)
87
+ end
88
+ end
89
+
90
+ describe 'selective load' do
91
+ before :all do
92
+ @people = Ydl.load('persons')
93
+ @lawyers = Ydl.load('lawyers')
94
+ end
95
+
96
+ it 'should return a merged Hash keyed by symbols' do
97
+ expect(@people.class).to eq(Hash)
98
+ expect(@people.class).to eq(Hash)
99
+ expect(@people[:revive].class).to eq(LawDoc::Person)
100
+ expect(@people.keys.sort)
101
+ .to eq(%i[erickson mainstreet mdg morgan revive tdoherty zmeac zmpef1 zmpef2])
102
+
103
+ expect(@lawyers.class).to eq(Hash)
104
+ expect(@lawyers.class).to eq(Hash)
105
+ expect(@lawyers[:ded].class).to eq(LawDoc::Lawyer)
106
+ expect(@lawyers.keys.sort)
107
+ .to eq(%i[cjh dclarke ded jclarke mcrisp pittenger rjones tfarrell])
108
+ end
109
+
110
+ it 'should resolve cross references' do
111
+ expect(@people[:erickson].name).to eq('Erickson Incorporated')
112
+ expect(@lawyers[:ded].last).to eq('Doherty')
113
+ end
114
+
115
+ it 'should instantiate all persons' do
116
+ klasses = { persons: 'LawDoc::Person' }
117
+ klasses.each_pair do |sym, kls|
118
+ Ydl[sym].each_pair do |_nm, obj|
119
+ expect(obj.class.name).to eq(kls)
120
+ end
121
+ end
122
+ end
123
+
124
+ it 'should instantiate all lawyers' do
125
+ klasses = { lawyers: 'LawDoc::Lawyer' }
126
+ klasses.each_pair do |sym, kls|
127
+ Ydl[sym].each_pair do |_nm, obj|
128
+ expect(obj.class.name).to eq(kls)
129
+ end
130
+ end
131
+ end
132
+
133
+ it 'should allow access through Ydl[]' do
134
+ expect(Ydl.data[:persons].class).to eq(Hash)
135
+ expect(Ydl[:persons].class).to eq(Hash)
136
+ expect(Ydl.data[:lawyers].class).to eq(Hash)
137
+ expect(Ydl[:lawyers].class).to eq(Hash)
138
+ end
139
+ end
140
+
141
+ describe 'load everything' do
142
+ before :all do
143
+ @hsh = Ydl.load
144
+ end
145
+
146
+ it 'should return a merged Hash keyed by symbols' do
147
+ expect(@hsh.class).to eq(Hash)
148
+ expect(Ydl.data.class).to eq(Hash)
149
+ expect(Ydl.data[:lawyers][:ded].class).to eq(LawDoc::Lawyer)
150
+ expect(Ydl.data.keys.sort)
151
+ .to eq(%i[cases constants courts judges junk lawyers persons])
152
+ end
153
+
154
+ it 'should resolve cross references' do
155
+ expect(Ydl[:cases][:erickson].parties.first.lawyers.first.last)
156
+ .to eq('Doherty')
157
+ end
158
+
159
+ it 'should instantiate all objects' do
160
+ klasses = { cases: 'LawDoc::Case', courts: 'LawDoc::Court',
161
+ judges: 'LawDoc::Judge', lawyers: 'LawDoc::Lawyer',
162
+ persons: 'LawDoc::Person' }
163
+ klasses.each_pair do |sym, kls|
164
+ Ydl[sym].each_value do |obj|
165
+ expect(obj.class.name).to eq(kls)
166
+ end
167
+ end
168
+ end
169
+
170
+ it 'should include court in mainstreet case' do
171
+ mainstreet = Ydl[:cases][:mainstreet]
172
+ expect(mainstreet.court.state).to eq('KS')
173
+ end
174
+
175
+ it 'should allow access through []' do
176
+ expect(Ydl[:lawyers].class).to eq(Hash)
177
+ expect(Ydl[:lawyers][:ded].class).to eq(LawDoc::Lawyer)
178
+ expect(Ydl[:lawyers][:ded].address.class).to eq(LawDoc::Address)
179
+ ad = Ydl[:cases][:erickson].parties.first.lawyers.first.address
180
+ expect(ad.class).to eq(LawDoc::Address)
181
+ expect(ad.city).to eq('Overland Park')
182
+ end
183
+ end
184
+ end
data/yaml_v_psych.rb ADDED
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'benchmark'
4
+ require 'yaml'
5
+ require 'psych'
6
+ require 'ydl'
7
+
8
+ n = 100
9
+ puts "Loading files #{n} times..."
10
+ Benchmark.bm(10) do |x|
11
+ x.report('YAML') { n.times { YAML.load_file('/home/ded/.ydl/lawyers.ydl') } }
12
+ x.report('Psych') { n.times { Psych.load_file('/home/ded/.ydl/lawyers.ydl') } }
13
+ x.report('Ydl') { n.times { Ydl.load_file('/home/ded/.ydl/lawyers.ydl') } }
14
+ end
15
+ puts "Done."
data/ydl.gemspec ADDED
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'ydl/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'ydl'
9
+ spec.version = Ydl::VERSION
10
+ spec.authors = ['Daniel E. Doherty']
11
+ spec.email = ['ded@ddoherty.net']
12
+
13
+ spec.summary = 'Object definition and instantiation using YAML files for Ruby programs'
14
+ spec.description = <<~DESC
15
+ Ydl provides a way to supply a ruby app with initialized objects by allowing
16
+ the user to supply the data about the objects in a hierarchical series of
17
+ "data definition files" with the extension .ydl.
18
+ DESC
19
+ spec.homepage = 'https://github.com/ddoherty03/ydl.git'
20
+ spec.license = 'MIT'
21
+
22
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
23
+ f.match(%r{^(test|features)/})
24
+ end
25
+ spec.bindir = 'bin'
26
+ # spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
27
+ spec.require_paths = ['lib']
28
+
29
+ spec.add_dependency 'activesupport', '~>6.0'
30
+ spec.add_dependency 'fat_core'
31
+ spec.add_dependency 'psych'
32
+
33
+ spec.add_development_dependency 'law_doc', '>= 0.1.15'
34
+ spec.add_development_dependency 'pry'
35
+ spec.add_development_dependency 'pry-doc'
36
+ spec.add_development_dependency 'debug', '>= 1.0.0'
37
+ spec.add_development_dependency 'rake'
38
+ spec.add_development_dependency 'rspec', '~> 3.0'
39
+ # spec.add_development_dependency 'law_doc'
40
+ end
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ydl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.06
5
+ platform: ruby
6
+ authors:
7
+ - Daniel E. Doherty
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-01-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fat_core
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: psych
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: law_doc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 0.1.15
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 0.1.15
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-doc
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: debug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 1.0.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 1.0.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.0'
139
+ description: |
140
+ Ydl provides a way to supply a ruby app with initialized objects by allowing
141
+ the user to supply the data about the objects in a hierarchical series of
142
+ "data definition files" with the extension .ydl.
143
+ email:
144
+ - ded@ddoherty.net
145
+ executables: []
146
+ extensions: []
147
+ extra_rdoc_files: []
148
+ files:
149
+ - ".gitignore"
150
+ - ".rspec"
151
+ - ".travis.yml"
152
+ - Gemfile
153
+ - Gemfile.lock
154
+ - README.org
155
+ - Rakefile
156
+ - bin/console
157
+ - bin/setup
158
+ - examples/brief.tex
159
+ - examples/cases.ydl
160
+ - examples/header.rb
161
+ - examples/lawyers.ydl
162
+ - examples/mwe.tex
163
+ - examples/persons.ydl
164
+ - examples/simple.tex
165
+ - examples/test_page.tex
166
+ - lib/ydl.rb
167
+ - lib/ydl/core_ext.rb
168
+ - lib/ydl/core_ext/array.rb
169
+ - lib/ydl/core_ext/array_refine.rb
170
+ - lib/ydl/core_ext/boolean.rb
171
+ - lib/ydl/core_ext/date.rb
172
+ - lib/ydl/core_ext/hash.rb
173
+ - lib/ydl/core_ext/numeric.rb
174
+ - lib/ydl/core_ext/string.rb
175
+ - lib/ydl/errors.rb
176
+ - lib/ydl/node.rb
177
+ - lib/ydl/top_queue.rb
178
+ - lib/ydl/tree.rb
179
+ - lib/ydl/version.rb
180
+ - lib/ydl/ydl.rb
181
+ - spec/array_spec.rb
182
+ - spec/core_ext/array_spec.rb
183
+ - spec/core_ext/boolean_spec.rb
184
+ - spec/core_ext/date_spec.rb
185
+ - spec/core_ext/hash_spec.rb
186
+ - spec/core_ext/numeric_spec.rb
187
+ - spec/core_ext/string_spec.rb
188
+ - spec/example_files/err/person_err.ydl
189
+ - spec/example_files/home/user/.ydl/config_template.yaml
190
+ - spec/example_files/home/user/.ydl/courts/courts.ydl
191
+ - spec/example_files/home/user/.ydl/lawyers.ydl
192
+ - spec/example_files/home/user/.ydl/persons.ydl
193
+ - spec/example_files/home/user/project/cases.ydl
194
+ - spec/example_files/home/user/project/courts.ydl
195
+ - spec/example_files/home/user/project/judges.ydl
196
+ - spec/example_files/home/user/project/lawyers.ydl
197
+ - spec/example_files/home/user/project/persons.ydl
198
+ - spec/example_files/home/user/project/subproject/lawyers.ydl
199
+ - spec/example_files/home/user/project/subproject/persons.ydl
200
+ - spec/example_files/sys/ydl/constants.ydl
201
+ - spec/example_files/sys/ydl/junk.ydl
202
+ - spec/spec_helper.rb
203
+ - spec/ydl_error_spec.rb
204
+ - spec/ydl_spec.rb
205
+ - yaml_v_psych.rb
206
+ - ydl.gemspec
207
+ homepage: https://github.com/ddoherty03/ydl.git
208
+ licenses:
209
+ - MIT
210
+ metadata: {}
211
+ post_install_message:
212
+ rdoc_options: []
213
+ require_paths:
214
+ - lib
215
+ required_ruby_version: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ version: '0'
220
+ required_rubygems_version: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ requirements: []
226
+ rubygems_version: 3.3.3
227
+ signing_key:
228
+ specification_version: 4
229
+ summary: Object definition and instantiation using YAML files for Ruby programs
230
+ test_files: []