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