linebreak 1.3.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/.gitignore +12 -0
- data/.rspec +1 -0
- data/.travis.yml +9 -0
- data/.yardopts +5 -0
- data/Gemfile +23 -0
- data/{History.txt → HISTORY.md} +27 -7
- data/LICENSE.md +15 -0
- data/README.md +255 -0
- data/Rakefile +46 -19
- data/lib/aef/linebreak.rb +142 -20
- data/lib/aef/linebreak/version.rb +30 -0
- data/lib/linebreak.rb +22 -0
- data/lib/linebreak/bare.rb +20 -0
- data/linebreak.gemspec +55 -0
- data/spec/linebreak_spec.rb +29 -133
- data/spec/spec_helper.rb +22 -131
- metadata +135 -107
- metadata.gz.sig +0 -0
- data/COPYING.txt +0 -674
- data/Manifest.txt +0 -23
- data/README.rdoc +0 -232
- data/bin/linebreak +0 -61
- data/lib/aef/linebreak/commands/encode.rb +0 -73
- data/lib/aef/linebreak/commands/encodings.rb +0 -88
- data/lib/aef/linebreak/commands/version.rb +0 -38
- data/lib/aef/linebreak/linebreak.rb +0 -124
- data/lib/aef/linebreak/pathname_conversion.rb +0 -44
- data/lib/aef/linebreak/string_extension.rb +0 -22
- data/spec/fixtures/mac.txt +0 -1
- data/spec/fixtures/mac_unix.txt +0 -2
- data/spec/fixtures/unix.txt +0 -3
- data/spec/fixtures/unix_windows.txt +0 -3
- data/spec/fixtures/unix_windows_mac.txt +0 -3
- data/spec/fixtures/windows.txt +0 -3
- data/spec/fixtures/windows_mac.txt +0 -2
- data/spec/spec.opts +0 -4
@@ -1,38 +0,0 @@
|
|
1
|
-
# Copyright 2009 Alexander E. Fischer <aef@raxys.net>
|
2
|
-
#
|
3
|
-
# This file is part of Linebreak.
|
4
|
-
#
|
5
|
-
# Linebreak is free software: you can redistribute it and/or modify it under the
|
6
|
-
# terms of the GNU General Public License as published by the Free Software
|
7
|
-
# Foundation, either version 3 of the License, or (at your option) any later
|
8
|
-
# version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful, but WITHOUT
|
11
|
-
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
12
|
-
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
13
|
-
# details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License along with
|
16
|
-
# this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
-
|
18
|
-
require 'aef/linebreak/pathname_conversion'
|
19
|
-
|
20
|
-
class Aef::Linebreak::VersionCommand
|
21
|
-
def execute
|
22
|
-
name = 'Linebreak'
|
23
|
-
puts "#{name} #{Aef::Linebreak::VERSION}"
|
24
|
-
puts
|
25
|
-
puts 'Project: https://rubyforge.org/projects/linebreak/'
|
26
|
-
puts "RDoc: http://#{name.downcase}.rubyforge.org/"
|
27
|
-
puts "Github: http://github.com/aef/#{name.downcase}/"
|
28
|
-
puts
|
29
|
-
puts 'Copyright 2009 Alexander E. Fischer <aef@raxys.net>'
|
30
|
-
# Read and print licensing information from the top of this file
|
31
|
-
if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('1.8.6')
|
32
|
-
puts File.read(__FILE__).map{|line| line[2..-1]}[3..15]
|
33
|
-
else
|
34
|
-
puts File.read(__FILE__).lines.map{|line| line[2..-1]}[3..15]
|
35
|
-
end
|
36
|
-
exit false
|
37
|
-
end
|
38
|
-
end
|
@@ -1,124 +0,0 @@
|
|
1
|
-
# Copyright 2009 Alexander E. Fischer <aef@raxys.net>
|
2
|
-
#
|
3
|
-
# This file is part of Linebreak.
|
4
|
-
#
|
5
|
-
# Linebreak is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
-
|
18
|
-
require 'pathname'
|
19
|
-
require 'set'
|
20
|
-
|
21
|
-
# Linebreak is Ruby library and commandline tool for conversion of text
|
22
|
-
# between linebreak encoding formats of unix, windows or mac.
|
23
|
-
#
|
24
|
-
# If you want to use the String extension methods, simply use the following
|
25
|
-
# command:
|
26
|
-
#
|
27
|
-
# require 'aef/linebreak/string_extension'
|
28
|
-
module Aef::Linebreak
|
29
|
-
autoload :ConversionToPathname, 'aef/linebreak/pathname_conversion'
|
30
|
-
autoload :EncodeCommand, 'aef/linebreak/commands/encode'
|
31
|
-
autoload :EncodingsCommand, 'aef/linebreak/commands/encodings'
|
32
|
-
autoload :VersionCommand, 'aef/linebreak/commands/version'
|
33
|
-
|
34
|
-
VERSION = '1.3.1'
|
35
|
-
|
36
|
-
BREAK_BY_SYSTEM = {
|
37
|
-
:unix => "\n",
|
38
|
-
:windows => "\r\n",
|
39
|
-
:mac => "\r"
|
40
|
-
}
|
41
|
-
|
42
|
-
SYSTEM_BY_BREAK = BREAK_BY_SYSTEM.invert
|
43
|
-
|
44
|
-
BREAK_REGEXP = /(\r\n|[\r\n])/
|
45
|
-
|
46
|
-
# Detects encoding systems of a string.
|
47
|
-
#
|
48
|
-
# Returns a Set with symbols of all encoding systems existent in the string.
|
49
|
-
def self.encodings(input)
|
50
|
-
if input.respond_to?(:to_s) then input = input.to_s
|
51
|
-
else raise ArgumentError, 'Input needs to be a string or must support to_s' end
|
52
|
-
|
53
|
-
occurences = Set.new
|
54
|
-
|
55
|
-
input.scan(BREAK_REGEXP).each do |linebreak|
|
56
|
-
occurences << SYSTEM_BY_BREAK[linebreak.first]
|
57
|
-
end
|
58
|
-
|
59
|
-
occurences
|
60
|
-
end
|
61
|
-
|
62
|
-
# Checks whether a string includes linebreaks of all the given encoding
|
63
|
-
# systems.
|
64
|
-
#
|
65
|
-
# One or more systems can be given as an array or an argument list of symbols.
|
66
|
-
#
|
67
|
-
# Returns true or false.
|
68
|
-
def self.encoding?(input, *encodings)
|
69
|
-
systems = BREAK_BY_SYSTEM.keys
|
70
|
-
|
71
|
-
encodings.flatten!
|
72
|
-
encodings.each do |encoding|
|
73
|
-
unless systems.include?(encoding)
|
74
|
-
raise ArgumentError,
|
75
|
-
%{Invalid encoding system. Available systems: #{systems.join(', ')}. Arguments are expected as symbols or an array of symbols.}
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
Aef::Linebreak.encodings(input) == Set.new(encodings)
|
80
|
-
end
|
81
|
-
|
82
|
-
# Create a copy of a string with all the string's linebreaks replaced by
|
83
|
-
# linebreaks of a specific system or a given replacement.
|
84
|
-
#
|
85
|
-
# If given output_encoding is not a key of BREAK_BY_SYSTEM, all linebreaks
|
86
|
-
# are replaced with output_encoding's content itself.
|
87
|
-
def self.encode(input, system_or_replacement = :unix)
|
88
|
-
if input.respond_to?(:to_s) then input = input.to_s
|
89
|
-
else raise ArgumentError, 'Input needs to be a string or must support to_s' end
|
90
|
-
|
91
|
-
input.gsub(BREAK_REGEXP,
|
92
|
-
BREAK_BY_SYSTEM[system_or_replacement] || system_or_replacement)
|
93
|
-
end
|
94
|
-
|
95
|
-
# Detects encoding systems of the string.
|
96
|
-
#
|
97
|
-
# Returns a Set with symbols of all encoding systems existent in the string.
|
98
|
-
#
|
99
|
-
# This method is supposed to be used as a method of String.
|
100
|
-
def linebreak_encodings
|
101
|
-
Aef::Linebreak.encodings(self)
|
102
|
-
end
|
103
|
-
|
104
|
-
# Checks whether the string includes linebreaks of all the given encoding
|
105
|
-
# systems.
|
106
|
-
#
|
107
|
-
# One or more systems can be given as an array or an argument list of symbols.
|
108
|
-
#
|
109
|
-
# This method is supposed to be used as a method of String.
|
110
|
-
def linebreak_encoding?(*encodings)
|
111
|
-
Aef::Linebreak.encoding?(self, encodings)
|
112
|
-
end
|
113
|
-
|
114
|
-
# Create a copy of the string with all the string's linebreaks replaced by
|
115
|
-
# linebreaks of a specific system or a given replacement.
|
116
|
-
#
|
117
|
-
# If given output_encoding is not a key of BREAK_BY_SYSTEM, all linebreaks
|
118
|
-
# are replaced with output_encoding's content itself.
|
119
|
-
#
|
120
|
-
# This method is supposed to be used as a method of String.
|
121
|
-
def linebreak_encode(system_or_replacement = :unix)
|
122
|
-
Aef::Linebreak.encode(self, system_or_replacement)
|
123
|
-
end
|
124
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# Copyright 2009 Alexander E. Fischer <aef@raxys.net>
|
2
|
-
#
|
3
|
-
# This file is part of Linebreak.
|
4
|
-
#
|
5
|
-
# Linebreak is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
-
|
18
|
-
# This class adds the type :pathname to user-choices
|
19
|
-
class Aef::Linebreak::ConversionToPathname < UserChoices::Conversion
|
20
|
-
def self.described_by?(conversion_tag)
|
21
|
-
conversion_tag == :pathname
|
22
|
-
end
|
23
|
-
|
24
|
-
def description
|
25
|
-
"a pathname"
|
26
|
-
end
|
27
|
-
|
28
|
-
def suitable?(actual)
|
29
|
-
true
|
30
|
-
end
|
31
|
-
|
32
|
-
def convert(value)
|
33
|
-
case value
|
34
|
-
when Array
|
35
|
-
pathnames = []
|
36
|
-
|
37
|
-
value.each {|path| pathnames << Pathname(path) }
|
38
|
-
|
39
|
-
pathnames
|
40
|
-
else
|
41
|
-
Pathname(value)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# Copyright 2009 Alexander E. Fischer <aef@raxys.net>
|
2
|
-
#
|
3
|
-
# This file is part of Linebreak.
|
4
|
-
#
|
5
|
-
# Linebreak is free software: you can redistribute it and/or modify
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
8
|
-
# (at your option) any later version.
|
9
|
-
#
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
-
# GNU General Public License for more details.
|
14
|
-
#
|
15
|
-
# You should have received a copy of the GNU General Public License
|
16
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
-
|
18
|
-
require 'aef/linebreak'
|
19
|
-
|
20
|
-
class String
|
21
|
-
include Aef::Linebreak
|
22
|
-
end
|
data/spec/fixtures/mac.txt
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Abcdef
|
data/spec/fixtures/mac_unix.txt
DELETED
data/spec/fixtures/unix.txt
DELETED
data/spec/fixtures/windows.txt
DELETED
data/spec/spec.opts
DELETED