jsus 0.1.20 → 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,4 +1,7 @@
1
1
  = Jsus Changelog
2
+ == Version 0.1.21
3
+ * Support for wildcards in requires statements (beware, something could break)
4
+
2
5
  == Version 0.1.20
3
6
  * Better integration for murdoc (factored it into class Jsus::Documenter)
4
7
  * Tree structure for future reuse
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.20
1
+ 0.1.21
data/bin/jsus CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
3
3
  begin
4
4
  require 'jsus'
5
5
  rescue LoadError
6
- $: << "./lib"
6
+ $: << File.expand_path(File.dirname(__FILE__) + "/../lib")
7
7
  require "jsus"
8
8
  end
9
9
 
@@ -65,6 +65,13 @@ Choice.options do
65
65
 
66
66
  end
67
67
 
68
+ option "no_syntax_highlight", :required => false do
69
+ default false
70
+ long "--no-syntax-highlight"
71
+ desc "Disable syntax highlighting in murdoc. Greatly increases docs generation speed. " <<
72
+ "Note: This option won't have any effect unless you have Pygments installed."
73
+ end
74
+
68
75
  option "verbose", :required => false do
69
76
  default false
70
77
  short "-v"
@@ -107,7 +114,7 @@ end
107
114
 
108
115
  # Generate documentation
109
116
  unless Choice.choices[:docs_classes].empty?
110
- documenter = Jsus::Documenter.new
117
+ documenter = Jsus::Documenter.new(:highlight_source => !Choice.choices[:no_syntax_highlight])
111
118
  package.source_files.each {|source| documenter << source }
112
119
  pool.sources.each {|source| documenter << source } if pool
113
120
  documenter.only(Choice.choices[:docs_classes]).generate(Choice.choices[:output_directory] + "/docs")
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jsus}
8
- s.version = "0.1.20"
8
+ s.version = "0.1.21"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mark Abramov"]
12
- s.date = %q{2010-11-27}
12
+ s.date = %q{2010-11-28}
13
13
  s.default_executable = %q{jsus}
14
14
  s.description = %q{Javascript packager and dependency resolver}
15
15
  s.email = %q{markizko@gmail.com}
@@ -57,6 +57,12 @@ Gem::Specification.new do |s|
57
57
  "spec/data/ChainDependencies/app/javascripts/Hash/package.yml",
58
58
  "spec/data/ChainDependencies/app/javascripts/Mash/Source/Mash.js",
59
59
  "spec/data/ChainDependencies/app/javascripts/Mash/package.yml",
60
+ "spec/data/DependenciesWildcards/app/javascripts/Class/Source/Class.js",
61
+ "spec/data/DependenciesWildcards/app/javascripts/Class/package.yml",
62
+ "spec/data/DependenciesWildcards/app/javascripts/Hash/Source/Hash.js",
63
+ "spec/data/DependenciesWildcards/app/javascripts/Hash/package.yml",
64
+ "spec/data/DependenciesWildcards/app/javascripts/Mash/Source/Mash.js",
65
+ "spec/data/DependenciesWildcards/app/javascripts/Mash/package.yml",
60
66
  "spec/data/Extensions/app/javascripts/Core/Source/Class.js",
61
67
  "spec/data/Extensions/app/javascripts/Core/package.yml",
62
68
  "spec/data/Extensions/app/javascripts/Orwik/Extensions/Class.js",
@@ -1,7 +1,10 @@
1
1
  module Jsus
2
2
  class Documenter
3
- def initialize
3
+ attr_accessor :options
4
+
5
+ def initialize(options = {:highlight_source => true})
4
6
  require "murdoc"
7
+ self.options = options
5
8
  rescue LoadError
6
9
  raise "You should install murdoc gem in order to produce documentation"
7
10
  end
@@ -30,7 +33,7 @@ module Jsus
30
33
  def create_documentation_for_source(source, template)
31
34
  skipped_lines = 0
32
35
  content = source.original_content.gsub(/\A\s*\/\*.*?\*\//m) {|w| skipped_lines += w.split("\n").size; "" }
33
- annotator = Murdoc::Annotator.new(content, :javascript, :highlight_source => true)
36
+ annotator = Murdoc::Annotator.new(content, :javascript, options)
34
37
  Murdoc::Formatter.new(template).render(:paragraphs => annotator.paragraphs, :header => source.header, :source => source, :skipped_lines => skipped_lines)
35
38
  end
36
39
 
@@ -105,7 +105,8 @@ module Jsus
105
105
  def <<(source_or_sources_or_package)
106
106
  case
107
107
  when source_or_sources_or_package.kind_of?(SourceFile)
108
- source = source_or_sources_or_package
108
+ source = source_or_sources_or_package
109
+ add_source_to_trees(source)
109
110
  sources << source
110
111
  if source.extends
111
112
  extensions_map[source.extends] ||= []
@@ -156,10 +157,10 @@ module Jsus
156
157
  def lookup_direct_dependencies!(source)
157
158
  result = if source
158
159
  (source.dependencies + source.external_dependencies).map do |dependency|
159
- result = lookup(dependency)
160
+ result = provides_tree.glob("/#{dependency}").map {|node| node.value }
160
161
  puts "#{source.filename} is missing #{dependency.is_a?(SourceFile) ? dependency.filename : dependency.to_s}" if !result && Jsus.verbose?
161
162
  result
162
- end
163
+ end.flatten
163
164
  else
164
165
  []
165
166
  end
@@ -170,36 +171,29 @@ module Jsus
170
171
  # Returs a tree, containing all the sources
171
172
  #
172
173
  def source_tree
173
- @source_tree ||= source_tree!
174
- end
175
-
176
- def source_tree! # :nodoc:
177
- tree = Tree.new
178
- sources.each do |source|
179
- if source.package
180
- tree.insert("/" + source.package.name + "/" + File.basename(source.filename), source)
181
- else
182
- tree.insert("/" + File.basename(source.filename), source)
183
- end
184
- end
185
- tree
174
+ @source_tree ||= Tree.new
186
175
  end
187
176
 
188
177
  #
189
178
  # Returns a tree containing all the provides tags
190
179
  #
191
180
  def provides_tree
192
- @provides_tree ||= provides_tree!
181
+ @provides_tree ||= Tree.new
193
182
  end
194
183
 
195
- def provides_tree!
196
- tree = Tree.new
197
- sources.each do |source|
198
- source.provides.each do |tag|
199
- tree.insert("/" + tag.to_s, source)
200
- end
184
+
185
+ #
186
+ # Registers the source in both trees
187
+ #
188
+ def add_source_to_trees(source)
189
+ if source.package
190
+ source_tree.insert("/" + source.package.name + "/" + File.basename(source.filename), source)
191
+ else
192
+ source_tree.insert("/" + File.basename(source.filename), source)
193
+ end
194
+ source.provides.each do |tag|
195
+ provides_tree.insert("/" + tag.to_s, source)
201
196
  end
202
- tree
203
197
  end
204
198
 
205
199
  protected
@@ -0,0 +1,13 @@
1
+ /*
2
+ ---
3
+
4
+ script: Class.js
5
+
6
+ description: Contains the Class Function for easily creating, extending, and implementing reusable Classes.
7
+
8
+ license: MIT-style license.
9
+
10
+ provides: [Class]
11
+
12
+ ...
13
+ */
@@ -0,0 +1,8 @@
1
+ name: Class
2
+ filename: class.js
3
+ description: Class class
4
+ license: MIT-Style License, http://mootools.net/license
5
+ copyright: Somebody
6
+ authors: Someone
7
+ sources:
8
+ - Source/Class.js
@@ -0,0 +1,16 @@
1
+ /*
2
+ ---
3
+
4
+ script: Hash.js
5
+
6
+ description: Contains the Hash extensions for objects
7
+
8
+ license: MIT-style license.
9
+
10
+ requires:
11
+ - Class/Class
12
+
13
+ provides: [Hash]
14
+
15
+ ...
16
+ */
@@ -0,0 +1,8 @@
1
+ name: Hash
2
+ filename: hash.js
3
+ description: Hash class
4
+ license: MIT-Style License, http://mootools.net/license
5
+ copyright: Somebody
6
+ authors: Someone
7
+ sources:
8
+ - Source/Hash.js
@@ -0,0 +1,16 @@
1
+ /*
2
+ ---
3
+
4
+ script: Mash.js
5
+
6
+ description: Contains the Mash extensions for objects
7
+
8
+ license: MIT-style license.
9
+
10
+ requires:
11
+ - Hash/*
12
+
13
+ provides: [Mash]
14
+
15
+ ...
16
+ */
@@ -0,0 +1,8 @@
1
+ name: Mash
2
+ filename: mash.js
3
+ description: Mash class
4
+ license: MIT-Style License, http://mootools.net/license
5
+ copyright: Somebody
6
+ authors: Someone
7
+ sources:
8
+ - Source/Mash.js
@@ -100,6 +100,14 @@ describe Jsus::Pool do
100
100
  subject.lookup_dependencies("Lol/Wtf").should == []
101
101
  subject.lookup_dependencies(Jsus::Tag["Caught/Mosh"]).should == []
102
102
  end
103
+
104
+ context "wildcard support" do
105
+ let(:input_dir) { "spec/data/DependenciesWildcards/app/javascripts" }
106
+
107
+ it "should support wildcards" do
108
+ subject.lookup_dependencies("Mash/Mash").should == [sources[1], sources[2]]
109
+ end
110
+ end
103
111
  end
104
112
 
105
113
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 20
9
- version: 0.1.20
8
+ - 21
9
+ version: 0.1.21
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mark Abramov
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-11-27 00:00:00 +03:00
17
+ date: 2010-11-28 00:00:00 +03:00
18
18
  default_executable: jsus
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -221,6 +221,12 @@ files:
221
221
  - spec/data/ChainDependencies/app/javascripts/Hash/package.yml
222
222
  - spec/data/ChainDependencies/app/javascripts/Mash/Source/Mash.js
223
223
  - spec/data/ChainDependencies/app/javascripts/Mash/package.yml
224
+ - spec/data/DependenciesWildcards/app/javascripts/Class/Source/Class.js
225
+ - spec/data/DependenciesWildcards/app/javascripts/Class/package.yml
226
+ - spec/data/DependenciesWildcards/app/javascripts/Hash/Source/Hash.js
227
+ - spec/data/DependenciesWildcards/app/javascripts/Hash/package.yml
228
+ - spec/data/DependenciesWildcards/app/javascripts/Mash/Source/Mash.js
229
+ - spec/data/DependenciesWildcards/app/javascripts/Mash/package.yml
224
230
  - spec/data/Extensions/app/javascripts/Core/Source/Class.js
225
231
  - spec/data/Extensions/app/javascripts/Core/package.yml
226
232
  - spec/data/Extensions/app/javascripts/Orwik/Extensions/Class.js
@@ -281,7 +287,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
281
287
  requirements:
282
288
  - - ">="
283
289
  - !ruby/object:Gem::Version
284
- hash: -1317162541712808956
290
+ hash: -3919880184784396237
285
291
  segments:
286
292
  - 0
287
293
  version: "0"