roundtrip_xml 0.1.4 → 0.1.5

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