ydl 0.2.06

Sign up to get free protection for your applications and to get access to all the features.
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: []