roundtrip_xml 0.1.4 → 0.1.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b5d0171291e731011fc69e726421dc68b3ceb039
4
- data.tar.gz: 1aaaa7152a29b616cbfd7e43b003ccf1b625ffa9
3
+ metadata.gz: ed71824b02e695d7398d8a74dd35186008b8b4e4
4
+ data.tar.gz: 0d8cfec6b03c3ab49be2ec57fb85adb65e6e7234
5
5
  SHA512:
6
- metadata.gz: de71838561d98d183d2e83b2a0311cd3db0c66f89911771ba8ea90a954b9d9ad7d6aa97e14cfd8b5aac6a78a4f5f34c13b56e7825aebac5496f866c63fb6a42a
7
- data.tar.gz: bf4e7a4d49cccafad9ec1c21a4953bd9ccc9dd7b5eca652b8cdb65daecc0b04deafbcf3b5aa18000fa7342c0dc2babcf28a33ab45db1bfc6685471de0f5e24b3
6
+ metadata.gz: 1e4bfa899cbfa7f9aab2dd6356ebbad6704a58ce4abd3ad81f803ce3f8617c10f76dd575b8046767ddc88092f636f220ee7e43766367f7bc34321a08b05a8e4b
7
+ data.tar.gz: d529ce7d02687948829b7758ab3e82ef21dd61f61948926f6730d0d9e95622cffca4b67176475c83b9407601e7d41776c06123a27c9668d5e2217da9afa88a01
@@ -5,6 +5,7 @@ require 'roundtrip_xml/root_cleanroom'
5
5
  require 'roundtrip_xml/base_cleanroom'
6
6
  require 'roundtrip_xml/utils'
7
7
  require 'roundtrip_xml/sexp_dsl_builder'
8
+ require 'roundtrip_xml/extractor'
8
9
  require 'tree'
9
10
  require 'set'
10
11
  # Class which evaluates DSL and read XML files to populate the namespace with classes
@@ -23,6 +24,8 @@ class DslRuntime
23
24
 
24
25
  end
25
26
 
27
+ ##
28
+ # @param root_method Symbol The method of the ROXML object to access its children
26
29
  def populate_raw (raw, root_method = nil)
27
30
  builder = RoxmlBuilder.new (Nokogiri::XML(raw).root), @classes
28
31
  new_classes = builder.build_classes
@@ -38,7 +41,7 @@ class DslRuntime
38
41
  roxml_root.send("#{root_method}=", new_objs)
39
42
  builder = SexpDslBuilder.new [roxml_root], subclasses, self
40
43
 
41
- builder.write_roxml_objs
44
+ builder.write_full_dsl
42
45
  end
43
46
  end
44
47
 
@@ -28,11 +28,17 @@ class Extractor
28
28
  def similar_fields
29
29
  keys = Set.new @hashes[0].keys
30
30
  diff_keys = Set.new
31
+ compared = {}
31
32
  @hashes.each do |hash_1|
32
33
  @hashes.each do |hash_2|
33
- diffs = HashDiff.best_diff(hash_1, hash_2).map do |diff|
34
+ compared[hash_2] ||= Set.new
35
+ next if hash_1 == hash_2 || compared[hash_1].include?(hash_2)
36
+ compared[hash_2].add hash_1
37
+
38
+ diffs = HashDiff.diff(hash_1, hash_2).map do |diff|
34
39
  diff[1].match(/(\w+)\.?/)[1]
35
40
  end
41
+
36
42
  diff_keys.merge diffs
37
43
  end
38
44
  end
@@ -101,8 +101,10 @@ EOF
101
101
  out += "\n\n"
102
102
  out
103
103
  end
104
-
105
104
  end
106
105
 
106
+ def write_full_dsl()
107
+ write_def_classes + "\n\n" + write_roxml_objs
108
+ end
107
109
 
108
110
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roundtrip_xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Usick
@@ -66,6 +66,76 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ruby2ruby
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubytree
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.9'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: hashdiff
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.3'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: multiset
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.5'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.5'
125
+ - !ruby/object:Gem::Dependency
126
+ name: sexp_processor
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '4.0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '4.0'
69
139
  description: A DSL that reads existing XML, generating an internal schema and using
70
140
  it to create a (somewhat) type safe DSL
71
141
  email: chris.usick@northfieldit.com