me2text-ruby 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc ADDED
@@ -0,0 +1,98 @@
1
+ = me2text-ruby, me2text parser for ruby
2
+
3
+ me2text-ruby는 me2text 형식의 문자열을 HTML 또는 평문(plain text)로 변환해주는
4
+ ruby 라이브러리이다.
5
+
6
+ == 사용
7
+
8
+
9
+ === HTML로 변환
10
+
11
+ require 'me2text'
12
+
13
+ str = 'me2text는 "미투데이(TM)":http://me2day.net 의 글/댓글 작성 규칙이다.'
14
+ Me2Text.me2text(str)
15
+ => "me2text는 <a href='http://me2day.net'>미투데이™"</a>의 글/댓글 작성 규칙이다."
16
+
17
+ === 평문으로 변환
18
+
19
+ require 'me2text'
20
+
21
+ str = 'me2text는 "미투데이(TM)":http://me2day.net 의 글/댓글 작성 규칙이다.'
22
+ Me2Text.me2text(str, :text)
23
+ => "me2text는 미투데이™"의 글/댓글 작성 규칙이다."
24
+
25
+ === String 클래스 확장
26
+
27
+ require 'me2text/string_ext'
28
+
29
+ str = 'me2text는 "미투데이(TM)":http://me2day.net 의 글/댓글 작성 규칙이다.'
30
+ str.me2text
31
+ => "me2text는 <a href='http://me2day.net'>미투데이™"</a>의 글/댓글 작성 규칙이다."
32
+
33
+ === 주의 사항
34
+
35
+ me2text-ruby는 입력값이 <tt>UTF-8</tt>로 인코딩된 경우에 한해서만 작동한다.
36
+
37
+ == 설치
38
+
39
+ me2text-ruby 라이브러리는 RubyGems를 통해 설치할 수 있다.
40
+
41
+ gem install me2text-ruby
42
+
43
+
44
+ == me2text란?
45
+
46
+ me2text는 미투데이 글/댓글등의 글 작성 규칙을 일컫는다.
47
+
48
+ === 링크
49
+
50
+ 링크를 표현하는 형식은 다음과 같다
51
+
52
+ "링크를 걸 문구":URL
53
+
54
+ 예를 들면 다음과 같다.
55
+
56
+ 미투텍스트는 "미투데이":http://me2day.net 의 글/댓글 작성 규칙을 일컫는다.
57
+ => 미투텍스트는 <a href='http://me2day.net'>미투데이"</a>의 글/댓글 작성 규칙을 일컫는다.
58
+
59
+ 또, 이와 같은 링크 형식으로 작성되지 않더라도 단순히 URL만 지정한 경우에 대해서도 링크로 변환한다.
60
+
61
+ `자세한 내용은 이 주소로. http://me2day.net`
62
+ => `자세한 내용은 이 주소로. <a href='http://me2day.net'>http://me2day.net</a>`
63
+
64
+ 백슬래시를 사용해 링크를 걸 문구에 따옴표를 포함할 수 있다. 즉, 아래와 같은 링크를 지정한 문자열에서 링크를 걸 문구에 포함된 따옴표에는 백슬래시를 붙여 전체 문자열에 링크를 적용할 수 있다.
65
+
66
+ "레이디가가 소감, \"한국의 환대 따뜻하고 신나, 그리웠다\"":http://me2.do/FnlH8u3
67
+ => <a href='http://me2.do/FnlH8u3'>레이디가가 소감, “한국의 환대 따뜻하고 신나, 그리웠다”</a>
68
+
69
+ === 따옴표
70
+
71
+ 다음과 같이 따옴표 문자를 LEFT/RIGHT DOUBLE QUOTATION MARK(“”) 문자로 변환한다.
72
+
73
+ "안녕하세요" -> “안녕하세요”
74
+
75
+ === 심볼 문자의 표현
76
+
77
+ 다음과 같은 특정 순서의 문자열을 심볼 문자로 변환한다.
78
+
79
+ * ... => … (HORIZONTAL ELLIPSIS)
80
+ * (TM) => ™ (TRADE MARK SIGN)
81
+ * (R) => ® (REGISTERED SIGN)
82
+ * (C) => © (COPYRIGHT SIGN)
83
+ * -- => — (EN DASH)
84
+
85
+ == TODO
86
+
87
+ == Contributors
88
+
89
+ Authors ordered by first contribution.
90
+
91
+ * Heungseok Do <codian@gmail.com>
92
+ * MinYoung Jung <kkungkkung@gmail.com>
93
+
94
+ == License
95
+
96
+ me2text-ruby is released under the MIT license:
97
+
98
+ * www.opensource.org/licenses/MIT
data/Rakefile CHANGED
@@ -1,6 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
2
  require 'rake/testtask'
3
-
3
+ begin
4
+ require 'rdoc/task'
5
+ rescue LoadError
6
+ require 'rake/rdoctask'
7
+ end
4
8
  desc "Run unit tests"
5
9
  Rake::TestTask.new("test_units") do |t|
6
10
  t.pattern = 'test/*_test.rb'
@@ -8,4 +12,17 @@ Rake::TestTask.new("test_units") do |t|
8
12
  t.warning = true
9
13
  end
10
14
 
15
+ desc "generate API documentation to doc/"
16
+ Rake::RDocTask.new do |rd|
17
+ rd.rdoc_dir = 'doc/'
18
+ rd.main = 'README.rdoc'
19
+ rd.rdoc_files.include 'README.rdoc', 'MIT-LICENSE', 'lib/me2text/me2text.rb'
20
+
21
+ rd.options << '-c utf-8'
22
+ rd.options << '--inline-source'
23
+ rd.options << '--line-numbers'
24
+ rd.options << '--all'
25
+ rd.options << '--fileboxes'
26
+ end
27
+
11
28
  task :default => :test_units
@@ -2,67 +2,59 @@
2
2
 
3
3
  require 'me2text/token'
4
4
 
5
- # Public: me2text 변환 메소드 제공한다.
5
+ # me2text 변환 메소드를 제공한다.
6
6
  #
7
- # Examples
7
+ # == Examples
8
8
  #
9
9
  # require 'me2text'
10
10
  #
11
11
  # str = 'me2text는 "미투데이(TM)":http://me2day.net 의 글/댓글 작성 규칙이다.'
12
12
  # Me2Text.me2text(str)
13
- # # => me2text는 <a href='http://me2day.net'>미투데이™"</a>의 글/댓글 작성 규칙이다.
13
+ # => "me2text는 <a href='http://me2day.net'>미투데이™"</a>의 글/댓글 작성 규칙이다."
14
14
  module Me2Text
15
15
  class << self
16
- # me2text(`text`)를 HTML로 변환한다.
16
+
17
+ # me2text(+text+)를 HTML로 변환한다.
17
18
  #
18
- # text - 변환할 me2text 형식의 문자열
19
- # options - 다음과 같은 옵션을 지원한다. :
20
- # :symbolize - 특정 순서의 문자열을 UNICODE의 해당 심볼로 변환한다.
21
- # 지정하지 않는 경우 `true`.
22
- # :open_new_window - +:html+ 형식으로 변환시 link에 대해 클릭하면 창으로 열릴
23
- # 수 있도록 `<a>` 태그에 `target='_blank'`를 삽입한다.
24
- # 지정하지 않는 경우 `false`.
25
- # :allow_line_break - 라인브레이크를 허용한다. `:html` 변환시 라인브레이크는
26
- # `<br />` 태그로 변환된다. 지정하지 않는 경우 `false`.
27
- # :limit - 변환 결과의 글자수를 제한한다. `:limit`에는 숫자를 지정하며 변환 결과는
28
- # 지정된 글자 수 까지만 변환된다.
29
- # :link_handler - 문자열에 나타나는 각 링크에 대해 지정된 block이 호출된다.
19
+ # === Parameters
20
+ # +text+ - 변환할 me2text 형식의 문자열
21
+ #
22
+ # === Options (+options+)
23
+ # * <tt>:symbolize</tt> - 특정 순서의 문자열을 UNICODE의 해당 심볼로 변환한다. 지정하지 않는 경우 `true`.
24
+ # * <tt>:open_new_window</tt> - <tt>:html</tt> 형식으로 변환시 link에 대해 클릭하면 새 창으로 열릴 수 있도록 `<a>` 태그에 `target='_blank'`를 삽입한다. 지정하지 않는 경우 `false`.
25
+ # * <tt>:allow_line_break</tt> - 라인브레이크를 허용한다. <tt>:html</tt> 로 변환시 라인브레이크는 `<br />` 태그로 변환된다. 지정하지 않는 경우 `false`.
26
+ # * <tt>:limit</tt> - 변환 결과의 글자수를 제한한다. <tt>:limit</tt>에는 숫자를 지정하며 변환 결과는 지정된 글자 수 까지만 변환된다.
27
+ # * <tt>:link_handler</tt> - 문자열에 나타나는 링크에 대해 지정된 block이 호출된다.
30
28
  def to_html(text, options = {})
31
29
  me2text(text, :html, options)
32
30
  end
33
31
 
34
32
  # me2text(+text+)를 평문(plain text)로 변환한다.
35
33
  #
36
- # text - 변환할 me2text 형식의 문자열
37
- # options - 다음과 같은 옵션을 지원한다. :
38
- # :symbolize - 특정 순서의 문자열을 UNICODE의 해당 심볼로 변환한다.
39
- # 지정하지 않는 경우 `true`.
40
- # :allow_line_break - 라인브레이크를 허용한다. `:html` 변환시 라인브레이크는
41
- # `<br />` 태그로 변환된다. 지정하지 않는 경우 `false`.
42
- # :limit - 변환 결과의 글자수를 제한한다. `:limit`에는 숫자를 지정하며 변환 결과는
43
- # 지정된 글자 수 까지만 변환된다.
44
- # :link_handler - 문자열에 나타나는 각 링크에 대해 지정된 block이 호출된다.
34
+ # === Parameters
35
+ # +text+ - 변환할 me2text 형식의 문자열
36
+ #
37
+ # === Options (+options+)
38
+ # * <tt>:symbolize</tt> - 특정 순서의 문자열을 UNICODE의 해당 심볼로 변환한다. 지정하지 않는 경우 `true`.
39
+ # * <tt>:open_new_window</tt> - <tt>:html</tt> 형식으로 변환시 link에 대해 클릭하면 새 창으로 열릴 수 있도록 `<a>` 태그에 `target='_blank'`를 삽입한다. 지정하지 않는 경우 `false`.
40
+ # * <tt>:allow_line_break</tt> - 라인브레이크를 허용한다. <tt>:html</tt> 변환시 라인브레이크는 `<br />` 태그로 변환된다. 지정하지 않는 경우 `false`.
41
+ # * <tt>:limit</tt> - 변환 결과의 글자수를 제한한다. <tt>:limit</tt>에는 숫자를 지정하며 변환 결과는 지정된 글자 수 까지만 변환된다.
42
+ # * <tt>:link_handler</tt> - 문자열에 나타나는 각 링크에 대해 지정된 block이 호출된다.
45
43
  def to_text(text, options = {})
46
44
  me2text(text, :text, options)
47
45
  end
48
46
 
49
- # me2text(`text`)를 지정한 형식(`format`)으로 변환한다.
47
+ # me2text(+text+)를 지정한 형식(+format+)으로 변환한다.
50
48
  #
51
- # text - 변환할 me2text 형식의 문자열
52
- # format - 변환 형식을 지정한다. `:html`, `:text` 중 하나를 지정하며
53
- # 지정하지 않은 경우 +:html+ 이 지정된다. `:html`은 HTML 형식으로 변환하며
54
- # +:text+는 평문(plain text)으로 변환한다.
55
- # options - 다음과 같은 옵션을 지원한다. :
56
- # :symbolize - 특정 순서의 문자열을 UNICODE의 해당 심볼로 변환한다.
57
- # 지정하지 않는 경우 `true`.
58
- # :open_new_window - +:html+ 형식으로 변환시 link에 대해 클릭하면 창으로 열릴
59
- # 있도록 `<a>` 태그에 `target='_blank'`를 삽입한다.
60
- # 지정하지 않는 경우 `false`.
61
- # :allow_line_break - 라인브레이크를 허용한다. `:html` 로 변환시 라인브레이크는
62
- # `<br />` 태그로 변환된다. 지정하지 않는 경우 `false`.
63
- # :limit - 변환 결과의 글자수를 제한한다. `:limit`에는 숫자를 지정하며 변환 결과는
64
- # 지정된 글자 수 까지만 변환된다.
65
- # :link_handler - 문자열에 나타나는 각 링크에 대해 지정된 block이 호출된다.
49
+ # == Parameters
50
+ # * +text+ - 변환할 me2text 형식의 문자열
51
+ # * +format+ - 변환 형식을 지정한다. <tt>:html</tt>, <tt>:text</tt> 중 하나를 지정하며 지정하지 않은 경우 <tt>:html</tt> 이 지정된다. <tt>:html</tt>은 HTML 형식으로 변환하며 <tt>:text</tt>는 평문(plain text)으로 변환한다.
52
+ # === Options (+options+)
53
+ # * <tt>:symbolize</tt> - 특정 순서의 문자열을 UNICODE의 해당 심볼로 변환한다. 지정하지 않는 경우 `true`.
54
+ # * <tt>:open_new_window</tt> - <tt>:html</tt> 형식으로 변환시 link에 대해 클릭하면 창으로 열릴 수 있도록 `<a>` 태그에 `target='_blank'`를 삽입한다. 지정하지 않는 경우 `false`.
55
+ # * <tt>:allow_line_break</tt> - 라인브레이크를 허용한다. <tt>:html</tt> 로 변환시 라인브레이크는 `<br />` 태그로 변환된다. 지정하지 않는 경우 `false`.
56
+ # * <tt>:limit</tt> - 변환 결과의 글자수를 제한한다. <tt>:limit</tt>에는 숫자를 지정하며 변환 결과는 지정된 글자 수 까지만 변환된다.
57
+ # * <tt>:link_handler</tt> - 문자열에 나타나는 각 링크에 대해 지정된 block이 호출된다.
66
58
  def me2text(text, format = :html, options = {})
67
59
  options = {
68
60
  :symbolize => true,
data/lib/me2text/token.rb CHANGED
@@ -149,7 +149,7 @@ module Me2Text
149
149
  process_length = 0
150
150
  tokens.each_with_index do |tk, idx|
151
151
  n_len = process_length + tk.length
152
- r_len = length - n_len
152
+ r_len = options[:limit] - n_len
153
153
 
154
154
  # 길이가 남았다.
155
155
  if r_len > 0
@@ -207,12 +207,12 @@ module Me2Text
207
207
  }.merge(options)
208
208
 
209
209
  val = self.to_s(format, options)
210
+
210
211
  if (val.length - nos) <= 0
211
- #빼면 아무것도 없다면..
212
- ##이 링크는 버린다
213
- options[:ellipsis]
212
+ val << options[:ellipsis]
214
213
  else
215
- val = val.split(//u)[0...(val.length - nos) - 1]
214
+ valarr = val.split(//u)
215
+ val = valarr[0...(valarr.length - nos) - 1].to_s
216
216
  val << options[:ellipsis]
217
217
  end
218
218
 
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module Me2Text
4
- VERSION = "1.0.2"
4
+ VERSION = "1.0.3"
5
5
  end
data/me2text-ruby.gemspec CHANGED
@@ -13,11 +13,15 @@ Gem::Specification.new do |s|
13
13
  me2text-ruby is ruby library to convert me2text to HTML or plain text}
14
14
  s.rubyforge_project = "me2text-ruby"
15
15
  s.files = Dir['{lib/**/*,test/**/*}'] +
16
- %w(.gitignore me2text-ruby.gemspec Gemfile MIT-LICENSE Rakefile README.md)
17
- s.test_files = Dir['test/**/*']
16
+ %w(.gitignore me2text-ruby.gemspec Gemfile MIT-LICENSE Rakefile README.rdoc)
17
+ s.test_files = Dir['test/**/*_test.rb']
18
18
  s.executables = ''
19
19
  s.require_paths = ["lib"]
20
20
 
21
+ s.extra_rdoc_files = ['MIT-LICENSE', 'README.rdoc']
22
+ s.rdoc_options = ["--main", "README.rdoc", "-c", "UTF-8"]
23
+
24
+
21
25
  # specify any dependencies here; for example:
22
26
  # s.add_development_dependency "rspec"
23
27
  # s.add_runtime_dependency "rest-client"
data/test/me2text_test.rb CHANGED
@@ -76,5 +76,12 @@ class Me2TextTest < Test::Unit::TestCase
76
76
  assert_equal test[1], Me2Text.me2text(test[0], :html, :allow_line_break => true)
77
77
  end
78
78
  end
79
+
80
+ def test_limit
81
+ assert_equal(
82
+ Me2Text.me2text("안녕하세요. 미투데이입니다.", :html, :limit => 10),
83
+ "안녕하세요. 미투…"
84
+ )
85
+ end
79
86
  end
80
87
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: me2text-ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 2
10
- version: 1.0.2
9
+ - 3
10
+ version: 1.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - codian
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-05-22 00:00:00 Z
19
+ date: 2012-05-23 00:00:00 Z
20
20
  dependencies: []
21
21
 
22
22
  description: |-
@@ -28,8 +28,9 @@ executables: []
28
28
 
29
29
  extensions: []
30
30
 
31
- extra_rdoc_files: []
32
-
31
+ extra_rdoc_files:
32
+ - MIT-LICENSE
33
+ - README.rdoc
33
34
  files:
34
35
  - lib/me2text/me2text.rb
35
36
  - lib/me2text/string_ext.rb
@@ -43,13 +44,16 @@ files:
43
44
  - Gemfile
44
45
  - MIT-LICENSE
45
46
  - Rakefile
46
- - README.md
47
+ - README.rdoc
47
48
  homepage: https://github.com/me2day/me2text-ruby
48
49
  licenses: []
49
50
 
50
51
  post_install_message:
51
- rdoc_options: []
52
-
52
+ rdoc_options:
53
+ - --main
54
+ - README.rdoc
55
+ - -c
56
+ - UTF-8
53
57
  require_paths:
54
58
  - lib
55
59
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -79,5 +83,4 @@ specification_version: 3
79
83
  summary: me2text parser for ruby
80
84
  test_files:
81
85
  - test/me2text_test.rb
82
- - test/test_helper.rb
83
86
  has_rdoc:
data/README.md DELETED
@@ -1,111 +0,0 @@
1
- me2text-ruby, me2text parser for ruby
2
- ======================================
3
-
4
- me2text-ruby는 me2text 형식의 문자열을 HTML 또는 평문(plain text)로 변환해주는
5
- ruby 라이브러리이다.
6
-
7
- 사용
8
- ----
9
-
10
- ### HTML로 변환
11
-
12
- require 'me2text'
13
-
14
- str = 'me2text는 "미투데이(TM)":http://me2day.net 의 글/댓글 작성 규칙이다.'
15
- Me2Text.me2text(str)
16
- # => me2text는 <a href='http://me2day.net'>미투데이™"</a>의 글/댓글 작성 규칙이다.
17
-
18
- ### 평문으로 변환
19
-
20
- require 'me2text'
21
-
22
- str = 'me2text는 "미투데이(TM)":http://me2day.net 의 글/댓글 작성 규칙이다.'
23
- Me2Text.me2text(str, :text)
24
- # => me2text는 미투데이™"의 글/댓글 작성 규칙이다.
25
-
26
- ### String 클래스 확장
27
-
28
- require 'me2text/string_ext'
29
-
30
- str = 'me2text는 "미투데이(TM)":http://me2day.net 의 글/댓글 작성 규칙이다.'
31
- str.me2text
32
- # => me2text는 <a href='http://me2day.net'>미투데이™"</a>의 글/댓글 작성 규칙이다.
33
-
34
- ### 주의 사항
35
-
36
- me2text-ruby 사용을 위해서는 $KCODE 변수를 'UTF8' 또는 'u'로 지정해야 한다.
37
-
38
- $KCODE = 'UTF8'
39
-
40
- me2text-ruby는 ruby 1.8.7-p302에서 테스트되었으며 아직 ruby 1.9.X를 지원하지 않는다.
41
-
42
- 설치
43
- ----
44
- me2text-ruby 라이브러리는 RubyGems를 통해 설치할 수 있다.
45
-
46
- gem install me2text-ruby
47
-
48
-
49
- me2text란?
50
- ----------
51
- me2text는 미투데이 글/댓글등의 글 작성 규칙을 일컫는다.
52
-
53
- ### 링크
54
-
55
- 링크를 표현하는 형식은 다음과 같다
56
-
57
- "링크를 걸 문구":URL
58
-
59
- 예를 들면 다음과 같다.
60
-
61
- 미투텍스트는 "미투데이":http://me2day.net 의 글/댓글 작성 규칙을 일컫는다.
62
- => 미투텍스트는 <a href='http://me2day.net'>미투데이"</a>의 글/댓글 작성 규칙을 일컫는다.
63
-
64
- 또, 이와 같은 링크 형식으로 작성되지 않더라도 단순히 URL만 지정한 경우에 대해서도 링크로
65
- 변환한다.
66
-
67
- `자세한 내용은 이 주소로. http://me2day.net`
68
- => `자세한 내용은 이 주소로. <a href='http://me2day.net'>http://me2day.net</a>`
69
-
70
- 백슬래시를 사용해 링크를 걸 문구에 따옴표를 포함할 수 있다. 즉, 아래와 같은 링크를 지정한
71
- 문자열에서 링크를 걸 문구에 포함된 따옴표에는 백슬래시를 붙여 전체 문자열에 링크를 적용할
72
- 수 있다.
73
-
74
- "레이디가가 소감, \"한국의 환대 따뜻하고 신나, 그리웠다\"":http://me2.do/FnlH8u3
75
- => <a href='http://me2.do/FnlH8u3'>레이디가가 소감, “한국의 환대 따뜻하고 신나, 그리웠다”</a>
76
-
77
- ### 따옴표
78
-
79
- 다음과 같이 따옴표 문자를 LEFT/RIGHT DOUBLE QUOTATION MARK(“”) 문자로 변환한다.
80
-
81
- "안녕하세요" -> “안녕하세요”
82
-
83
- ### 심볼 문자의 표현
84
-
85
- 다음과 같은 특정 순서의 문자열을 심볼 문자로 변환한다.
86
-
87
- * ... => … (HORIZONTAL ELLIPSIS)
88
- * (TM) => ™ (TRADE MARK SIGN)
89
- * (R) => ® (REGISTERED SIGN)
90
- * (C) => © (COPYRIGHT SIGN)
91
- * -- => — (EN DASH)
92
-
93
- TODO
94
- ----
95
-
96
- * Ruby 1.9 지원
97
-
98
- Contributors
99
- ------------
100
-
101
- Authors ordered by first contribution.
102
-
103
- Heungseok Do <codian@gmail.com>
104
- MinYoung Jung <kkungkkung@gmail.com>
105
-
106
- License
107
- -------
108
-
109
- me2text-ruby is released under the MIT license:
110
-
111
- * www.opensource.org/licenses/MIT