jsb3 1.0.0 → 1.0.1
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.
- data/jsb3.gemspec +1 -1
- data/lib/jsb3.rb +6 -118
- data/lib/jsb3/file.rb +39 -0
- data/lib/jsb3/package.rb +21 -0
- data/lib/jsb3/packages.rb +33 -0
- data/lib/jsb3/resource.rb +14 -0
- data/lib/jsb3/resources.rb +28 -0
- data/lib/jsb3/version.rb +1 -1
- data/spec/jsb3/resources_spec.rb +4 -6
- data/spec/sample_files/sdk.jsb3 +1 -1
- metadata +7 -2
data/jsb3.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
|
|
6
6
|
gem.email = ["ryan@wahvee.com"]
|
7
7
|
gem.description = %q{Parses a Sencha JsBuilder configuration file.}
|
8
8
|
gem.summary = %q{http://extjs.com/products/jsbuilder/}
|
9
|
-
gem.homepage = ""
|
9
|
+
gem.homepage = "https://github.com/RLovelett/jsb3"
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
12
12
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/lib/jsb3.rb
CHANGED
@@ -1,125 +1,9 @@
|
|
1
1
|
require 'yajl'
|
2
2
|
require "jsb3/version"
|
3
|
+
require "jsb3/resources"
|
4
|
+
require "jsb3/packages"
|
3
5
|
|
4
6
|
module Jsb3
|
5
|
-
class Packages
|
6
|
-
include Enumerable
|
7
|
-
attr_accessor :elements
|
8
|
-
|
9
|
-
def initialize(raw_package_array, resources)
|
10
|
-
@elements = []
|
11
|
-
raw_package_array.each do |raw_package|
|
12
|
-
@elements.push(Package.new(raw_package, resources))
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def each(&block)
|
17
|
-
@elements.each do |element|
|
18
|
-
block.call(element)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def ids
|
23
|
-
@elements.map do |pkg|
|
24
|
-
pkg.id
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def names
|
29
|
-
@elements.map do |pkg|
|
30
|
-
pkg.name
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class Package
|
36
|
-
include Enumerable
|
37
|
-
attr_reader :id, :name, :target, :files
|
38
|
-
|
39
|
-
def initialize(raw_package_hash, resources)
|
40
|
-
@id = raw_package_hash['id']
|
41
|
-
@name = raw_package_hash['name']
|
42
|
-
@target = raw_package_hash['target']
|
43
|
-
@files = raw_package_hash['files'].map do |raw_file|
|
44
|
-
File.new raw_file, resources
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def to_s
|
49
|
-
"#{@name} has #{@files.count} files."
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
class File
|
54
|
-
def initialize(raw_file_hash, resources)
|
55
|
-
path = raw_file_hash['path']
|
56
|
-
path = resources.apply(path)
|
57
|
-
@path = path
|
58
|
-
@name = raw_file_hash['name']
|
59
|
-
end
|
60
|
-
|
61
|
-
def dirname
|
62
|
-
::File.dirname(to_path)
|
63
|
-
end
|
64
|
-
|
65
|
-
alias :path :dirname
|
66
|
-
|
67
|
-
def basename
|
68
|
-
::File.basename(to_path)
|
69
|
-
end
|
70
|
-
|
71
|
-
alias :name :basename
|
72
|
-
|
73
|
-
def to_s
|
74
|
-
"#{dirname}/#{basename}"
|
75
|
-
end
|
76
|
-
|
77
|
-
def exists?
|
78
|
-
::File.exists?(to_s)
|
79
|
-
end
|
80
|
-
|
81
|
-
def absolute_path
|
82
|
-
::File.absolute_path(to_s)
|
83
|
-
end
|
84
|
-
|
85
|
-
private
|
86
|
-
def to_path
|
87
|
-
"#{@path}/#{@name}"
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
class Resources
|
92
|
-
include Enumerable
|
93
|
-
|
94
|
-
def initialize(raw_resources_array = Array.new)
|
95
|
-
@resources = raw_resources_array.map do |raw_resource|
|
96
|
-
Resource.new raw_resource
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def each(&block)
|
101
|
-
@resources.each do |resource|
|
102
|
-
block.call(resource)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
def apply(str)
|
107
|
-
resource = @resources.find do |resource|
|
108
|
-
str.to_s.include? resource.src
|
109
|
-
end
|
110
|
-
return str.sub(resource.src, resource.dest) unless resource.nil?
|
111
|
-
return str
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
class Resource
|
116
|
-
attr_reader :src, :dest
|
117
|
-
def initialize(raw_resource_hash)
|
118
|
-
@src = raw_resource_hash['src']
|
119
|
-
@dest = raw_resource_hash['dest']
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
7
|
class Jsb3
|
124
8
|
attr_reader :packages, :name, :license, :resources
|
125
9
|
|
@@ -143,5 +27,9 @@ module Jsb3
|
|
143
27
|
|
144
28
|
def respond_to?(method_sym, include_private = false)
|
145
29
|
end
|
30
|
+
|
31
|
+
def to_s
|
32
|
+
name
|
33
|
+
end
|
146
34
|
end
|
147
35
|
end
|
data/lib/jsb3/file.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Jsb3
|
2
|
+
class File
|
3
|
+
def initialize(raw_file_hash, resources)
|
4
|
+
path = raw_file_hash['path']
|
5
|
+
path = resources.apply(path)
|
6
|
+
@path = path
|
7
|
+
@name = raw_file_hash['name']
|
8
|
+
end
|
9
|
+
|
10
|
+
def dirname
|
11
|
+
::File.dirname(to_path)
|
12
|
+
end
|
13
|
+
|
14
|
+
alias :path :dirname
|
15
|
+
|
16
|
+
def basename
|
17
|
+
::File.basename(to_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
alias :name :basename
|
21
|
+
|
22
|
+
def to_s
|
23
|
+
"#{dirname}/#{basename}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def exists?
|
27
|
+
::File.exists?(to_s)
|
28
|
+
end
|
29
|
+
|
30
|
+
def absolute_path
|
31
|
+
::File.absolute_path(to_s)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
def to_path
|
36
|
+
"#{@path}/#{@name}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/jsb3/package.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'jsb3/file'
|
2
|
+
|
3
|
+
module Jsb3
|
4
|
+
class Package
|
5
|
+
include Enumerable
|
6
|
+
attr_reader :id, :name, :target, :files
|
7
|
+
|
8
|
+
def initialize(raw_package_hash, resources)
|
9
|
+
@id = raw_package_hash['id']
|
10
|
+
@name = raw_package_hash['name']
|
11
|
+
@target = raw_package_hash['target']
|
12
|
+
@files = raw_package_hash['files'].map do |raw_file|
|
13
|
+
File.new raw_file, resources
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_s
|
18
|
+
"#{@name} has #{@files.count} files."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'jsb3/package'
|
2
|
+
|
3
|
+
module Jsb3
|
4
|
+
class Packages
|
5
|
+
include Enumerable
|
6
|
+
attr_accessor :elements
|
7
|
+
|
8
|
+
def initialize(raw_package_array, resources)
|
9
|
+
@elements = []
|
10
|
+
raw_package_array.each do |raw_package|
|
11
|
+
@elements.push(Package.new(raw_package, resources))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def each(&block)
|
16
|
+
@elements.each do |element|
|
17
|
+
block.call(element)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def ids
|
22
|
+
@elements.map do |pkg|
|
23
|
+
pkg.id
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def names
|
28
|
+
@elements.map do |pkg|
|
29
|
+
pkg.name
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Jsb3
|
2
|
+
class Resource
|
3
|
+
attr_reader :src
|
4
|
+
def initialize(raw_resource_hash)
|
5
|
+
@src = raw_resource_hash['src']
|
6
|
+
@dest = raw_resource_hash['dest']
|
7
|
+
end
|
8
|
+
|
9
|
+
def dest
|
10
|
+
# Append the trailing slash if it is not found
|
11
|
+
@dest + '/' if @dest[-1] != '/'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'jsb3/resource'
|
2
|
+
|
3
|
+
module Jsb3
|
4
|
+
class Resources
|
5
|
+
include Enumerable
|
6
|
+
|
7
|
+
def initialize(raw_resources_array = Array.new)
|
8
|
+
@resources = raw_resources_array.map do |raw_resource|
|
9
|
+
Resource.new raw_resource
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def each(&block)
|
14
|
+
@resources.each do |resource|
|
15
|
+
block.call(resource)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def apply(str)
|
20
|
+
resource = @resources.find do |resource|
|
21
|
+
regex = Regexp.new "^#{resource.src}"
|
22
|
+
str.to_s.match(regex)
|
23
|
+
end
|
24
|
+
return str.sub(resource.src, resource.dest) unless resource.nil?
|
25
|
+
return str
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/jsb3/version.rb
CHANGED
data/spec/jsb3/resources_spec.rb
CHANGED
@@ -9,12 +9,10 @@ describe Jsb3::Resources do
|
|
9
9
|
context "path correction" do
|
10
10
|
it { jsb3.resources.apply("test").should == "test" }
|
11
11
|
it { jsb3.resources.apply("../override/this/path/").should == "spec/sample_files/" }
|
12
|
-
it { jsb3.resources.apply("test/../override/this/path/").should == "test/
|
13
|
-
it { jsb3.resources.apply("test../override/this/path/").should == "
|
12
|
+
it { jsb3.resources.apply("test/../override/this/path/").should == "test/../override/this/path/" }
|
13
|
+
it { jsb3.resources.apply("test../override/this/path/").should == "test../override/this/path/" }
|
14
14
|
|
15
|
-
it { jsb3.resources.apply("
|
16
|
-
it { jsb3.resources.apply("
|
17
|
-
it { jsb3.resources.apply("test/../override/this/path//test").should == "test/spec/sample_files//test" }
|
18
|
-
it { jsb3.resources.apply("test../override/this/path//test").should == "testspec/sample_files//test" }
|
15
|
+
it { jsb3.resources.apply("../override/this/path/test").should == "spec/sample_files/test" }
|
16
|
+
it { jsb3.resources.apply("../override/this/path//test").should == "spec/sample_files//test" }
|
19
17
|
end
|
20
18
|
end
|
data/spec/sample_files/sdk.jsb3
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsb3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -76,6 +76,11 @@ files:
|
|
76
76
|
- Rakefile
|
77
77
|
- jsb3.gemspec
|
78
78
|
- lib/jsb3.rb
|
79
|
+
- lib/jsb3/file.rb
|
80
|
+
- lib/jsb3/package.rb
|
81
|
+
- lib/jsb3/packages.rb
|
82
|
+
- lib/jsb3/resource.rb
|
83
|
+
- lib/jsb3/resources.rb
|
79
84
|
- lib/jsb3/version.rb
|
80
85
|
- spec/jsb3/file_spec.rb
|
81
86
|
- spec/jsb3/jsb3_spec.rb
|
@@ -88,7 +93,7 @@ files:
|
|
88
93
|
- spec/sample_files/sample.js
|
89
94
|
- spec/sample_files/sdk.jsb3
|
90
95
|
- spec/spec_helper.rb
|
91
|
-
homepage:
|
96
|
+
homepage: https://github.com/RLovelett/jsb3
|
92
97
|
licenses: []
|
93
98
|
post_install_message:
|
94
99
|
rdoc_options: []
|