mynyml-unindent 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
@@ -0,0 +1,24 @@
1
+ ==== Summary
2
+
3
+ Simple Ruby method to unindent strings. Useful for multiline strings embeded in already indented code.
4
+
5
+ ==== Examples
6
+
7
+ class Profile
8
+ def default_text
9
+ <<-STR.unindent
10
+ Anonymous Coward
11
+ - Community Guest
12
+ STR
13
+ end
14
+ end
15
+
16
+ puts Profile.new.default_text
17
+
18
+ will output:
19
+ Anonymous Coward
20
+ - Community Guest
21
+
22
+ instead of:
23
+ Anonymous Coward
24
+ - Community Guest
data/Rakefile ADDED
@@ -0,0 +1,48 @@
1
+ require 'rake/gempackagetask'
2
+ require 'pathname'
3
+ require 'yaml'
4
+
5
+ def gem
6
+ RUBY_1_9 ? 'gem19' : 'gem'
7
+ end
8
+
9
+ def all_except(paths)
10
+ Dir['**/*'] - paths.map {|path| path.strip.gsub(/^\//,'').gsub(/\/$/,'') }
11
+ end
12
+
13
+ spec = Gem::Specification.new do |s|
14
+ s.name = 'unindent'
15
+ s.version = '0.8.0'
16
+ s.summary = "Ruby method to unindent strings."
17
+ s.description = "Ruby method to unindent strings. Useful for multiline strings embeded in already indented code."
18
+ s.author = "Martin Aumont"
19
+ s.email = 'mynyml@gmail.com'
20
+ s.homepage = ''
21
+ s.has_rdoc = true
22
+ s.require_path = "lib"
23
+ s.files = Dir['**/*']
24
+ end
25
+
26
+ Rake::GemPackageTask.new(spec) do |p|
27
+ p.gem_spec = spec
28
+ end
29
+
30
+
31
+ desc "Remove package products"
32
+ task :clean => :clobber_package
33
+
34
+ desc "Update the gemspec for GitHub's gem server"
35
+ task :gemspec do
36
+ Pathname("#{spec.name}.gemspec").open('w') {|f| f << YAML.dump(spec) }
37
+ end
38
+
39
+ desc "Install gem"
40
+ task :install => [:clobber, :package] do
41
+ sh "#{SUDO} #{gem} install pkg/#{spec.full_name}.gem"
42
+ end
43
+
44
+ desc "Uninstall gem"
45
+ task :uninstall => :clean do
46
+ sh "#{SUDO} #{gem} uninstall -v #{spec.version} -x #{spec.name}"
47
+ end
48
+
data/TODO ADDED
@@ -0,0 +1 @@
1
+ o Update readme with better exaples
@@ -0,0 +1,15 @@
1
+ require 'pathname'
2
+ root = Pathname(__FILE__).dirname.parent
3
+ require root.join('lib/unindent')
4
+
5
+ class Profile
6
+ def default_text
7
+ <<-STR
8
+ Anonymous Coward
9
+ - Community Guest
10
+ STR
11
+ end
12
+ end
13
+
14
+ puts Profile.new.default_text
15
+ puts Profile.new.default_text.unindent
@@ -0,0 +1,15 @@
1
+ require 'pathname'
2
+ root = Pathname(__FILE__).dirname.parent
3
+ require root.join('lib/unindent')
4
+
5
+ class Linker
6
+ def self.parse(text)
7
+ #text.gsub(%r%http://([^\s]+)%, <<-STR.unindent)
8
+ # <a href="http://\1">
9
+ # \1
10
+ # </a>
11
+ #STR
12
+ end
13
+ end
14
+
15
+ puts Linker.parse("find all you need at http://example.com")
data/lib/unindent.rb ADDED
@@ -0,0 +1,11 @@
1
+ module Unindentation
2
+ def unindent
3
+ indent = self.select {|line| !line.strip.empty? }.map {|line| line.index(/[^\s]/) }.compact.min
4
+ self.gsub(/^[[:blank:]]{#{indent}}/, '')
5
+ end
6
+ def unindent!
7
+ self.replace(self.unindent)
8
+ end
9
+ end
10
+
11
+ String.class_eval { include Unindentation }
@@ -0,0 +1,10 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'context'
4
+ require 'matchy'
5
+ begin
6
+ require 'ruby-debug'
7
+ require 'quietbacktrace'
8
+ rescue LoadError, RuntimeError
9
+ # pass
10
+ end
@@ -0,0 +1,49 @@
1
+ require 'pathname'
2
+ root = Pathname(__FILE__).dirname.parent
3
+ require root.join('test/test_helper')
4
+ require root.join('lib/unindent')
5
+
6
+ class UnindentTest < Test::Unit::TestCase
7
+ context "Unindent" do
8
+ context "simple indentation" do
9
+ test "removes space indentation" do
10
+ source = "\s\sabc"
11
+ expect = "abc"
12
+ source.unindent.should be(expect)
13
+ end
14
+ test "removes tab indentation" do
15
+ source = "\tabc"
16
+ expect = "abc"
17
+ source.unindent.should be(expect)
18
+ end
19
+ test "removes space/tab indentation" do
20
+ source = "\t\s\sabc"
21
+ expect = "abc"
22
+ source.unindent.should be(expect)
23
+ end
24
+ end
25
+ context "multiple lines" do
26
+ test "removes indentation" do
27
+ source = "\tabc\n\tabc"
28
+ expect = "abc\nabc"
29
+ source.unindent.should be(expect)
30
+ end
31
+ test "keeps relative indentation" do
32
+ source = "\tabc\n\t\tabc"
33
+ expect = "abc\n\tabc"
34
+ source.unindent.should be(expect)
35
+ end
36
+ test "ignores blank lines for indent calculation" do
37
+ source = "\n\tabc\n\n\t\tabc\n"
38
+ expect = "\nabc\n\n\tabc\n"
39
+ source.unindent.should be(expect)
40
+ end
41
+ end
42
+ test "modifies string in-place" do
43
+ source = "\s\sabc"
44
+ expect = "abc"
45
+ source.unindent!
46
+ source.should be(expect)
47
+ end
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mynyml-unindent
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ platform: ruby
6
+ authors:
7
+ - Martin Aumont
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-03-14 21:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Ruby method to unindent strings. Useful for multiline strings embeded in already indented code.
17
+ email: mynyml@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib
26
+ - lib/unindent.rb
27
+ - examples
28
+ - examples/simple.rb
29
+ - examples/simple2.rb
30
+ - README
31
+ - Rakefile
32
+ - test
33
+ - test/test_helper.rb
34
+ - test/test_unindent.rb
35
+ - TODO
36
+ has_rdoc: true
37
+ homepage: ""
38
+ post_install_message:
39
+ rdoc_options: []
40
+
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ version:
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ requirements: []
56
+
57
+ rubyforge_project:
58
+ rubygems_version: 1.2.0
59
+ signing_key:
60
+ specification_version: 2
61
+ summary: Ruby method to unindent strings.
62
+ test_files: []
63
+