uv 0.0.7.0 → 0.0.7.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/lib/uv.rb CHANGED
@@ -3,6 +3,7 @@ require 'fileutils'
3
3
  require 'textpow'
4
4
  require 'uv/render_processor'
5
5
  require "uv/version"
6
+ require "uv/finding_syntaxes"
6
7
  require 'uv/utility'
7
8
  require 'uv/engine' if defined?(Rails)
8
9
 
@@ -25,27 +26,6 @@ module Uv
25
26
  result << File.join(File.dirname(__FILE__), ".." )
26
27
  end
27
28
 
28
- # Returns the Textpow::SyntaxNode for this syntax;
29
- # @raise ArgumentError if no syntax is found
30
- # Ex: syntax_node_for('ruby') => Textpow::SyntaxNode.load('ruby.syntax')
31
- def self.syntax_node_for(syntax)
32
- if syntax == '' or syntax.nil?
33
- puts "No syntax supplied, defaulting to 'plain_text' syntax"
34
- syntax = "plain_text"
35
- end
36
- if !@syntaxes.key?(syntax)
37
- filename = File.join(@syntax_path, "#{syntax}.syntax")
38
- @syntaxes[syntax] = if File.exist?(filename)
39
- Textpow::SyntaxNode.load(filename)
40
- else
41
- false
42
- end
43
- end
44
- if !@syntaxes[syntax]
45
- raise ArgumentError, "Syntax not found. No #{syntax}.syntax file in #{@syntax_path}"
46
- end
47
- @syntaxes[syntax]
48
- end
49
29
 
50
30
  # Copies files from the [ruby-uv/render/<arg1>/files/] to the <arg2> output directory
51
31
  def Uv.copy_files output, output_dir
@@ -69,46 +49,22 @@ module Uv
69
49
  end
70
50
  end
71
51
 
72
- # Guesses the correct syntax based on the input files fileType.
73
- # If the FileType doesnt containt a valid syntax name, each syntax
74
- # has it's first line matched againts the the file's first line
75
- def Uv.syntax_for_file file_name
76
- init_syntaxes unless @syntaxes
77
- first_line = ""
78
- File.open( file_name, 'r' ) { |f|
79
- while (first_line = f.readline).strip.size == 0; end
80
- }
81
- result = []
82
- @syntaxes.each do |key, value|
83
- assigned = false
84
- if value.fileTypes
85
- value.fileTypes.each do |t|
86
- if t == File.basename( file_name ) || t == File.extname( file_name )[1..-1]
87
- result << [key, value]
88
- assigned = true
89
- break
90
- end
91
- end
92
- end
93
- unless assigned
94
- if value.firstLineMatch && value.firstLineMatch =~ first_line
95
- result << [key, value]
96
- end
97
- end
98
- end
99
- result
100
- end
101
-
102
52
  # Parses <arg1> text using RenderProcessor.load(Textpow::SyntaxNode.parse(text)), returns the vailid <output>
103
53
  def Uv.parse text, output = "xhtml", syntax_name = nil, line_numbers = false, render_style = nil, headers = false
104
54
  RenderProcessor.load(output, render_style, line_numbers, headers) do |processor|
105
- syntax_node_for(syntax_name).parse(text, processor)
55
+ find_syntaxes([syntax_name], get_first_line(text)).parse(text, processor)
106
56
  end.string
107
57
  end
108
58
 
59
+ def Uv.get_first_line(text)
60
+ first_break = text.index(/[\n\r]/) || text.length - 1
61
+ text[0..first_break].strip
62
+ end
63
+
109
64
  # Parses <arg1> text with Textpow::DebugProcessor, using the given syntax
110
65
  def Uv.debug text, syntax_name
111
66
  syntax_node_for(syntax_name).parse(text, Textpow::DebugProcessor.new)
112
67
  end
113
68
 
69
+
114
70
  end
@@ -0,0 +1,91 @@
1
+ module Uv
2
+
3
+ def Uv.find_syntaxes_by_ext(ext)
4
+ syntaxes = []
5
+ if !@syntaxes.key?(ext)
6
+ @syntaxes.each do |syntax_name, syntax_node|
7
+ syntaxes << syntax_node if syntax_node.fileTypes && syntax_node.fileTypes.include?(ext)
8
+ end
9
+ filename = File.join(@syntax_path, "#{ext}.syntax")
10
+ syntaxes << Textpow::SyntaxNode.load(filename) if File.exist?(filename)
11
+ else
12
+ syntaxes << @syntaxes[ext]
13
+ end
14
+ syntaxes
15
+ end
16
+
17
+ def Uv.find_syntaxes_by_first_line(first_line)
18
+ syntaxes = []
19
+ @syntaxes.each do |syntax_name, syntax_node|
20
+ syntaxes << syntax_node if syntax_node.firstLineMatch && syntax_node.firstLineMatch =~ first_line
21
+ end
22
+ syntaxes
23
+ end
24
+
25
+ def Uv.find_syntaxes(extensions=[], first_line='')
26
+ init_syntaxes unless @syntaxes
27
+ syntaxes = []
28
+ extensions.each do |ext|
29
+ syntaxes << find_syntaxes_by_ext(ext)
30
+ end
31
+ syntaxes << find_syntaxes_by_first_line(first_line)
32
+ syntaxes
33
+ end
34
+
35
+
36
+ # Returns the Textpow::SyntaxNode for this syntax;
37
+ # @raise ArgumentError if no syntax is found
38
+ # Ex: syntax_node_for('ruby') => Textpow::SyntaxNode.load('ruby.syntax')
39
+ def self.syntax_node_for(syntax)
40
+ if !@syntaxes.key?(syntax)
41
+ filename = File.join(@syntax_path, "#{syntax}.syntax")
42
+ @syntaxes[syntax] = if File.exist?(filename)
43
+ Textpow::SyntaxNode.load(filename)
44
+ else
45
+ false
46
+ end
47
+ end
48
+ if !@syntaxes[syntax]
49
+ if syntax == '' or syntax.nil?
50
+ puts "No syntax supplied, defaulting to 'plain_text' syntax"
51
+ syntax = "plain_text"
52
+ else
53
+ raise ArgumentError, "Syntax not found. No #{syntax}.syntax file in #{@syntax_path}"
54
+ end
55
+ end
56
+ @syntaxes[syntax]
57
+ end
58
+
59
+
60
+
61
+ # Guesses the correct syntax based on the input files fileType.
62
+ # If the FileType doesnt containt a valid syntax name, each syntax
63
+ # has it's first line matched againts the the file's first line
64
+ def Uv.syntax_for_file file_name
65
+ init_syntaxes unless @syntaxes
66
+ first_line = ""
67
+ File.open( file_name, 'r' ) { |f|
68
+ while (first_line = f.readline).strip.size == 0; end
69
+ }
70
+ result = []
71
+ @syntaxes.each do |key, value|
72
+ assigned = false
73
+ if value.fileTypes
74
+ value.fileTypes.each do |t|
75
+ if t == File.basename( file_name ) || t == File.extname( file_name )[1..-1]
76
+ result << [key, value]
77
+ assigned = true
78
+ break
79
+ end
80
+ end
81
+ end
82
+ unless assigned
83
+ if value.firstLineMatch && value.firstLineMatch =~ first_line
84
+ result << [key, value]
85
+ end
86
+ end
87
+ end
88
+ result
89
+ end
90
+
91
+ end
@@ -1,3 +1,3 @@
1
1
  module Uv
2
- VERSION = '0.0.7.0'
2
+ VERSION = '0.0.7.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7.0
4
+ version: 0.0.7.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-03 00:00:00.000000000 Z
13
+ date: 2011-10-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: spox-textpow
17
- requirement: &70143552391360 !ruby/object:Gem::Requirement
17
+ requirement: &70263484525880 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70143552391360
25
+ version_requirements: *70263484525880
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: spox-plist
28
- requirement: &70143552409540 !ruby/object:Gem::Requirement
28
+ requirement: &70263484525340 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70143552409540
36
+ version_requirements: *70263484525340
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rake
39
- requirement: &70143552409120 !ruby/object:Gem::Requirement
39
+ requirement: &70263484524900 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70143552409120
47
+ version_requirements: *70263484524900
48
48
  description: Ruby powered syntax highlighting. Ruby 1.9 port of Ultraviolet
49
49
  email:
50
50
  - spox@modspox.com
@@ -65,6 +65,7 @@ files:
65
65
  - bin/uv
66
66
  - lib/uv.rb
67
67
  - lib/uv/engine.rb
68
+ - lib/uv/finding_syntaxes.rb
68
69
  - lib/uv/render_processor.rb
69
70
  - lib/uv/utility.rb
70
71
  - lib/uv/version.rb
@@ -312,9 +313,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
313
  - - ! '>='
313
314
  - !ruby/object:Gem::Version
314
315
  version: '0'
315
- segments:
316
- - 0
317
- hash: -1639761505872700738
318
316
  requirements: []
319
317
  rubyforge_project: uv
320
318
  rubygems_version: 1.8.10