snippets_converter 0.1.2 → 0.1.3

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/README.rdoc CHANGED
@@ -1,30 +1,42 @@
1
1
  = Snippets Converter
2
2
 
3
- Convert TextMate Snippets into Gedit, NetBeans and Ruble (Aptana RadRails 3) snippets.
3
+ Convert TextMate Snippets into Gedit, NetBeans and Ruble (Aptana Studio/RadRails 3) snippets.
4
4
 
5
5
  == Install the gem
6
6
  sudo gem snippets_converter
7
7
 
8
- == How to use (for Ubuntu)
9
- * Open a terminal and go in your TextMate Bundle directory. Then run :
8
+ == How to use (for Ubuntu and Ruby snippets)
9
+ * Open a terminal and go in your TextMate Bundle directory. Then run
10
+
10
11
  snippets_converter netbeans|gedit|ruble
11
- * This will convert all your Snippets in a XML file into the "out" folder of your current directory.
12
+
13
+ This will convert all your Snippets in a XML file into the "out" folder of your current directory.
12
14
 
13
15
  === Gedit
14
- Put the gedit_snippets.xml file into
16
+ * Put the <language>.xml file into
15
17
 
16
18
  /home/username/.gnome2/gedit/snippets
17
19
 
20
+ ==== If you used GMate (http://github.com/gmate/gmate)
21
+
22
+ * Open your <language>.xml file and check if the "language" attribute of "snippets" tag is correct
23
+
24
+ <snippets language="rubyonrails">
25
+
18
26
  === NetBeans
19
- Put the org-netbeans-modules-editor-settings-CustomCodeTemplates.xml file into
27
+ * Put the org-netbeans-modules-editor-settings-CustomCodeTemplates.xml file into
20
28
 
21
- /home/username/.netbeans/6.8/config/Editors/text/x-ruby/CodeTemplates
29
+ /home/username/.netbeans/6.9/config/Editors/text/x-ruby/CodeTemplates
22
30
 
23
- === Ruble
24
- Put the ruble_snippets.rb file into
31
+ === Ruble (Aptana Studio/RadRails 3)
32
+ * Put the <language>_snippets.rb file into
25
33
 
26
34
  /home/username/Documents/Aptana Rubles/my_ruble.ruble/snippets
27
35
 
36
+ * Open your <language>_snippets.rb file and check if the value of "scope" is correct
37
+
38
+ with_defaults :scope => "source.ruby" do |bundle|
39
+
28
40
  More info at https://radrails.tenderapp.com/faqs/radrails-3/ruble-programming-guide
29
41
 
30
42
  == Note on Patches/Pull Requests
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -5,8 +5,8 @@ module SnippetsConverter
5
5
  def editor_conversion(trigger, description, code)
6
6
  code.gsub!(/\$0/, '${cursor}')
7
7
  code.gsub!(/\$\{([0-9]{1,5}):((?>[^{}]+)|(\1))+\}/m, '${\1 default="\2"}')
8
+ code.gsub!(/(\$\{([0-9]{1,5}) default\=\".+\"\}.+)\$(\2)/m, '\1${\3}')
8
9
  code.gsub!(/\$([0-9]{1,5})/, '${tabStop\1 default=""}')
9
-
10
10
  return <<-CODE
11
11
  <codetemplate abbreviation='#{trigger}' xml:space='preserve'>
12
12
  <description><![CDATA[#{description}]]></description>
@@ -84,25 +84,42 @@ module SnippetsConverter
84
84
 
85
85
  # Nested tab stops and place holders remover, e.g '${1: ${3:cool} $2 }' become ' ${3:cool} $2 '
86
86
  def transform_snippet(code)
87
-
88
- # Nested tab stops, e.g '${1: $2 }'
89
- nested_tab_stop = /((\$\{[0-9]{1,5}:[^${}]*)\$([0-9]{1,5})([^${}]*\}))+/m
90
- code.gsub!(nested_tab_stop, '\2:nested_tab_stop\3:\4')
91
-
92
- code.gsub!(/\$([0-9]{1,5})/, ':tab_stop\1:') # Tab Stop, e.g '$0'
93
- code.gsub!(/\$([^{][^0-9]+[^:])/, ':dollar:\1') # Dollar, e.g. '$titi'
94
-
95
- # Place holders, e.g. '${1: cool }'
96
- place_holders = /\$\{((?>[^${}]+)|(\1))+\}/m
97
- place_holders_matches = code.scan(place_holders)
98
- place_holders_matches.flatten.each do |place_holder|
99
- if place_holder
100
- idx = place_holder.gsub(/([0-9]{1,5}):.+/,'\1')
101
- code.gsub!(/\$\{#{place_holder}\}/m, ":place_holders#{idx}:")
87
+ # Transform TextMate snippets syntax into snippets converter internal codes, e.g. '$' become ':dollar:'
88
+
89
+ # Nested tab stops, e.g '${1: $2 }'
90
+ nested_tab_stop = /((\$\{[0-9]{1,5}:[^${}]*)\$([0-9]{1,5})([^${}]*\}))+/m
91
+ code.gsub!(nested_tab_stop, '\2:nested_tab_stop\3:\4')
92
+
93
+ code.gsub!(/\$([0-9]{1,5})/, ':tab_stop\1:') # Tab Stop, e.g '$0'
94
+
95
+ # Unescape "$", "`" and "}" if there are in plain text or in the value of a variable
96
+ # More info at http://manual.macromates.com/en/snippets#plain_text and http://manual.macromates.com/en/snippets#variables
97
+ code.gsub!(/\\`/, ':escape_backtick:')
98
+ code.gsub!(/\\\$/, ':escape_dollar:')
99
+
100
+ i = 0
101
+ loop do
102
+ i += 1
103
+ break if !code.gsub!(/\{([^{}]*|[^{}]*\{[^{}]*\}[^{}]*)\\\}/, ':escape_bracket:\1:escape_close_bracket:') || i > 20
104
+ end
105
+
106
+ code.gsub!(/\$([^{][^0-9]+[^:])/, ':dollar:\1') # Dollar, e.g. '$titi'
107
+
108
+ # Place holders, e.g. '${1: cool }'
109
+ place_holders = /\$\{((?>[^${}]+)|(\1))+\}/m
110
+ place_holders_matches = code.scan(place_holders)
111
+ place_holders_matches.flatten.each do |place_holder|
112
+ if place_holder
113
+ idx = place_holder.gsub(/([0-9]{1,5}):.+/,'\1')
114
+ code.gsub!(/\$\{#{place_holder}\}/m, ":place_holders#{idx}:")
115
+ end
102
116
  end
103
- end
117
+
104
118
 
105
- # Nested place holders, e.g. '${1: ${3:cool} }'
119
+ #TODO Check if the regular expression in variables are correctly converted/supported
120
+ # More info at http://manual.macromates.com/en/regular_expressions.html
121
+
122
+ # Removed Nested place holders, e.g. '${1: ${3:cool} }' become ' ${3:cool} '
106
123
  nested_place_holders = /(\$\{[0-9]{1,5}:(([^${}]*(\$\{[0-9]{1,5}:|\{)[^${}]+\}[^${}]*)|[^${}]+)\})/m
107
124
  i = 0
108
125
  loop do
@@ -110,24 +127,37 @@ module SnippetsConverter
110
127
  break if !code.gsub!(nested_place_holders, '\2') || i > 20
111
128
  end
112
129
 
113
- place_holders_matches.flatten.each do |place_holder|
114
- if place_holder
115
- idx = place_holder.gsub(/([0-9]{1,5}):.+/,'\1')
116
- code.gsub!(/:place_holders#{idx}:/m, "\$\{#{place_holder}\}")
130
+ # Transform snippets converter internal codes into characters, e.g. ':dollar:' become '$'
131
+
132
+ place_holders_matches.flatten.each do |place_holder|
133
+ if place_holder
134
+ idx = place_holder.gsub(/([0-9]{1,5}):.+/,'\1')
135
+ code.gsub!(/:place_holders#{idx}:/m, "\$\{#{place_holder}\}")
136
+ end
137
+ end
138
+
139
+ # Nested tab stops
140
+ code.gsub!(/:nested_tab_stop([0-9]{1,5}):/, '$\1')
141
+ nested_tab_stop = /(\$\{[0-9]{1,5}:([^${}]*\$[0-9]{1,5}[^${}]*)\})+/m
142
+ i = 0
143
+ loop do
144
+ i += 1
145
+ break if !code.gsub!(nested_tab_stop, '\2') || i > 20
117
146
  end
118
- end
119
147
 
120
- # Nested tab stops
121
- code.gsub!(/:nested_tab_stop([0-9]{1,5}):/, '$\1')
122
- nested_tab_stop = /(\$\{[0-9]{1,5}:([^${}]*\$[0-9]{1,5}[^${}]*)\})+/m
123
- i = 0
124
- loop do
125
- i += 1
126
- break if !code.gsub!(nested_tab_stop, '\2') || i > 20
127
- end
148
+ code.gsub!(/:tab_stop([0-9]{1,5}):/, '$\1')
149
+
150
+ code.gsub!(/:escape_backtick:/, '`')
151
+ code.gsub!(/:escape_dollar:/, '$')
152
+
153
+ i = 0
154
+ loop do
155
+ i += 1
156
+ break if !code.gsub!(/:escape_bracket:(.*):escape_close_bracket:/, '{\1}') || i > 20
157
+ end
128
158
 
129
- code.gsub!(/:tab_stop([0-9]{1,5}):/, '$\1')
130
- code.gsub!(/:dollar:/, '$')
159
+ code.gsub!(/:dollar:/, '$')
160
+
131
161
  end
132
162
 
133
163
  # Dummy methods, the current Editor module must override them
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{snippets_converter}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Nowhere Man"]
12
- s.date = %q{2010-05-07}
12
+ s.date = %q{2010-06-17}
13
13
  s.default_executable = %q{snippets_converter}
14
14
  s.description = %q{Quick and dirty code to transform TextMate Snippets into Gedit, NetBeans and Ruble (Aptana Studio) snippets}
15
15
  s.email = %q{nowhereman@open_office}
@@ -41,19 +41,19 @@ Gem::Specification.new do |s|
41
41
  s.homepage = %q{http://github.com/nowhereman/snippets_converter}
42
42
  s.rdoc_options = ["--charset=UTF-8"]
43
43
  s.require_paths = ["lib"]
44
- s.rubygems_version = %q{1.3.6}
44
+ s.rubygems_version = %q{1.3.7}
45
45
  s.summary = %q{Convert TextMate Snippets Gedit, NetBeans and Ruble (Aptana Studio) Snippets.}
46
46
  s.test_files = [
47
- "test/test_helper.rb",
47
+ "test/test_parse_tm_snippet.rb",
48
48
  "test/test_snippets_converter.rb",
49
- "test/test_parse_tm_snippet.rb"
49
+ "test/test_helper.rb"
50
50
  ]
51
51
 
52
52
  if s.respond_to? :specification_version then
53
53
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
54
54
  s.specification_version = 3
55
55
 
56
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
56
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
57
57
  s.add_runtime_dependency(%q<activesupport>, ["< 3.0.0"])
58
58
  else
59
59
  s.add_dependency(%q<activesupport>, ["< 3.0.0"])
@@ -62,4 +62,3 @@ Gem::Specification.new do |s|
62
62
  s.add_dependency(%q<activesupport>, ["< 3.0.0"])
63
63
  end
64
64
  end
65
-
@@ -14,6 +14,9 @@ class TestSnippetsConverter < Test::Unit::TestCase
14
14
  @snippets << [ "${1: [ ${2: cool} ${3: guy { ${4:tralala} } } ] }", " [ ${2: cool} guy { ${4:tralala} } ] "]
15
15
  @snippets << [ 'should_have_db_column :${1:name}${2:, :${3:type} =&gt; ${4:"${5:string}"}${6:, :${7:default} =&gt; ${8:nil}}}', 'should_have_db_column :${1:name}, :${3:type} =&gt; "${5:string}", :${7:default} =&gt; ${8:nil}']
16
16
  @snippets << [ "should_have_db_indices :${1:object_id}${2:, [:${3:commentable_type}, :${4:commentable_id}]}$0", "should_have_db_indices :${1:object_id}, [:${3:commentable_type}, :${4:commentable_id}]$0" ]
17
+ @snippets << [ "${1: ${2: {:global => \\$COOL\\} } ${3: && \\`cd /\\`} }", " ${2: {:global => $COOL} } ${3: && `cd /`} "]
18
+ @snippets << [ "${1: cool} ${2: {:global => ${3:\\`cd /\\`} \\} }", "${1: cool} {:global => ${3:`cd /`} } "]
19
+ @snippets << [ "${1: ${2: {:global => { :hash1 => \\`cd /\\` \\} \\} } }", " ${2: {:global => { :hash1 => `cd /` } } } "]
17
20
 
18
21
  snippet = 'context "${1:description}" do
19
22
  ${2:setup do
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snippets_converter
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 29
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 1
8
- - 2
9
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
10
11
  platform: ruby
11
12
  authors:
12
13
  - Nowhere Man
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-07 00:00:00 +02:00
18
+ date: 2010-06-17 00:00:00 +02:00
18
19
  default_executable: snippets_converter
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: activesupport
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - <
26
28
  - !ruby/object:Gem::Version
29
+ hash: 7
27
30
  segments:
28
31
  - 3
29
32
  - 0
@@ -69,27 +72,31 @@ rdoc_options:
69
72
  require_paths:
70
73
  - lib
71
74
  required_ruby_version: !ruby/object:Gem::Requirement
75
+ none: false
72
76
  requirements:
73
77
  - - ">="
74
78
  - !ruby/object:Gem::Version
79
+ hash: 3
75
80
  segments:
76
81
  - 0
77
82
  version: "0"
78
83
  required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
79
85
  requirements:
80
86
  - - ">="
81
87
  - !ruby/object:Gem::Version
88
+ hash: 3
82
89
  segments:
83
90
  - 0
84
91
  version: "0"
85
92
  requirements: []
86
93
 
87
94
  rubyforge_project:
88
- rubygems_version: 1.3.6
95
+ rubygems_version: 1.3.7
89
96
  signing_key:
90
97
  specification_version: 3
91
98
  summary: Convert TextMate Snippets Gedit, NetBeans and Ruble (Aptana Studio) Snippets.
92
99
  test_files:
93
- - test/test_helper.rb
94
- - test/test_snippets_converter.rb
95
100
  - test/test_parse_tm_snippet.rb
101
+ - test/test_snippets_converter.rb
102
+ - test/test_helper.rb