me2text-ruby 1.0.2 → 1.0.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 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