rcnb 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82d4a0468703176185dc596b3e2461063b47409158d69775b4e4691acad53992
4
- data.tar.gz: ea815585427f99a094e58447d789b424187677767666d6a49cc6772aabe12ce6
3
+ metadata.gz: dc00399dbaaa07059d89706fcd1fd3da1879bbb1f9c7705ed2d3f3ae3ad303b8
4
+ data.tar.gz: cf1e4013967904175450ec6ca403222f513873aaf385c967726d31a218cd5a7e
5
5
  SHA512:
6
- metadata.gz: e28c283e4c9b445e1f26958739632c8c58ef40e751733813c21af19ad7d206c4dfebaab8b8640addc5363d2837dc8bc36efbc3a4ba0783dbb9e23acdef42b678
7
- data.tar.gz: 38e9dd00f4bde23241a7e09483e57d48b51c4ce354f6b9f3a2e7089c7c5874496ed7d9b8c31e572c7e9c21d4861115802fb95f9fcdf97b3c1a41a64c12796304
6
+ metadata.gz: f32bec5c338eeed5aea9bb335d9c89525d115224462a6aa2929ae617596907eabb99b0d020d0f1958aa682ce67d46399bfefec6c14743e19589913fbd5a8f75a
7
+ data.tar.gz: 39fb82d34ee859285180a5732047e2bed6f380209fd63512cd56489f9cc8ddcca25084cd0262be800c55250cb5b40df15a70f53650fc83bc97af4f3a2daa45f8
data/README.md CHANGED
@@ -1,3 +1,43 @@
1
1
  # rcnb.rb
2
2
 
3
- A ruby implementation of RCNB
3
+ [![gem_shield](https://img.shields.io/gem/v/rcnb?color=%23fa0000)](https://rubygems.org/gems/rcnb)
4
+
5
+ A ruby implementation of [RCNB](https://github.com/rcnbapp/RCNB.js)
6
+
7
+ ### Install
8
+
9
+ ```bash
10
+ gem install rcnb
11
+ ```
12
+
13
+ ### Usage
14
+ **Basic**
15
+ ```ruby
16
+ require 'rcnb'
17
+
18
+ RCNB.encode('Who NB?')
19
+ # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
20
+ RCNB.decode('ȐĉņþƦȻƝƃŔć')
21
+ # => RCNB!
22
+ ```
23
+
24
+ **String Enhancement**
25
+
26
+ ```ruby
27
+ require 'rcnb/str'
28
+ using RCNB::Str
29
+
30
+ 'Who NB?'.rcnb
31
+ # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
32
+ 'ȐĉņþƦȻƝƃŔć'.rcnb_decode
33
+ # => RCNB!
34
+ 'ȐĉņþƦȻƝƃŔć'.rcnb?
35
+ # => RCNB!
36
+ 'not rcnb'.rcnb?
37
+ # => nil
38
+ ```
39
+
40
+ ### Reference
41
+
42
+ [RCNB.js](https://github.com/rcnbapp/RCNB.js)
43
+ [RCNB.py](https://github.com/chr233/RCNB.python)
data/lib/rcnb.rb CHANGED
@@ -1,23 +1,28 @@
1
1
 
2
- # = rcnb
2
+ # # rcnb
3
3
  # A ruby implementation of RCNB
4
4
  # ---
5
5
 
6
6
  # RCNB模块
7
7
  #
8
- # == Example
9
- # require 'rcnb'
10
- #
11
- # RCNB.encode('Who NB?')
12
- # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
13
- #
14
- # RCNB.decode('ȐĉņþƦȻƝƃŔć')
15
- # => RCNB!
8
+ # ## Example
9
+ # ```ruby
10
+ # require 'rcnb'
11
+ #
12
+ # RCNB.encode('Who NB?')
13
+ # # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
14
+ # RCNB.decode('ȐĉņþƦȻƝƃŔć')
15
+ # # => RCNB!
16
+ # ```
16
17
  module RCNB
18
+ # @private
17
19
  # :stopdoc:
18
20
  CR=:rRŔŕŖŗŘřƦȐȑȒȓɌɍ
21
+ # @private
19
22
  CC=:cCĆćĈĉĊċČčƇƈÇȻȼ
23
+ # @private
20
24
  CN=:nNŃńŅņŇňƝƞÑǸǹȠȵ
25
+ # @private
21
26
  CB=:bBƀƁƃƄƅßÞþ
22
27
 
23
28
  def self.getIndexHash(s)
@@ -26,20 +31,32 @@ module RCNB
26
31
  end
27
32
 
28
33
  private_class_method :getIndexHash
34
+ # @private
29
35
  IR=getIndexHash(CR)
36
+ # @private
30
37
  IC=getIndexHash(CC)
38
+ # @private
31
39
  IN=getIndexHash(CN)
40
+ # @private
32
41
  IB=getIndexHash(CB)
33
42
 
43
+ # @private
34
44
  SR=CR.size
45
+ # @private
35
46
  SC=CC.size
47
+ # @private
36
48
  SN=CN.size
49
+ # @private
37
50
  SB=CB.size
38
51
 
52
+ # @private
39
53
  SRC=SR*SC
54
+ # @private
40
55
  SNB=SN*SB
56
+ # @private
41
57
  SCNB=SC*SNB
42
58
  # :startdoc:
59
+
43
60
  def self.encodeByte(i)
44
61
  raise ArgumentError,'rc/nb overflow' if i>0xFF
45
62
  if i>0x7F
@@ -107,10 +124,9 @@ module RCNB
107
124
  # end
108
125
 
109
126
  # 将文本编码为RCNB密文
110
- # [str] 文本
111
- # [encoding] 文本编码
112
- # ---
113
- # [return] 密文
127
+ # @param str [String] 文本
128
+ # @param encoding 文本编码
129
+ # @return [String] 密文
114
130
  def self.encode(str,encoding=nil)
115
131
  str=str.encode(encoding) if encoding
116
132
  arr=str.unpack('C*')
@@ -124,10 +140,9 @@ module RCNB
124
140
  end
125
141
 
126
142
  # 将RCNB密文解码为文本
127
- # [str] 密文
128
- # [encoding] 文本编码
129
- # ---
130
- # [return] 文本
143
+ # @param str [String] 密文
144
+ # @param encoding 文本编码
145
+ # @return [String] 文本
131
146
  def self.decode(str,encoding=nil)
132
147
  raise ArgumentError,'invalid length' unless (str.size & 1).zero?
133
148
  arr=[]
data/lib/rcnb/str.rb ADDED
@@ -0,0 +1,68 @@
1
+ require File.expand_path("../../rcnb.rb",__FILE__)
2
+
3
+ module RCNB
4
+
5
+ # 字符串增强
6
+ # ## Example
7
+ # ```ruby
8
+ # require 'rcnb/str'
9
+ # using RCNB::Str
10
+ #
11
+ # 'Who NB?'.rcnb
12
+ # # => ȐȼŃƅȓčƞÞƦȻƝƃŖć
13
+ # 'ȐĉņþƦȻƝƃŔć'.rcnb_decode
14
+ # # => RCNB!
15
+ # 'ȐĉņþƦȻƝƃŔć'.rcnb?
16
+ # # => RCNB!
17
+ # 'not rcnb'.rcnb?
18
+ # # => nil
19
+ # ```
20
+ # @note
21
+ # 使用`using RCNB::Str`来细化String类
22
+ # @since 0.2.0
23
+ module Str
24
+ # @!method rcnb(encoding=nil)
25
+ # 将字符串编码为RCNB密文
26
+ # @!scope instance
27
+ # @param encoding 文本编码
28
+ # @return [String] 密文
29
+ #
30
+ # @!method rcnb_decode(encoding=nil)
31
+ # 将RCNB密文字符串解码
32
+ # @!scope instance
33
+ # @param encoding 文本编码
34
+ # @return [String] 解码后的文本
35
+ #
36
+ # @!method rcnb?(encoding=nil)
37
+ # 判断字符串是否为RCNB密文
38
+ # @!scope instance
39
+ # @param encoding 文本编码
40
+ # @return [String,nil] 若是RCNB密文,则返回解码结果,否则返回nil
41
+ refine String do
42
+
43
+ # 将字符串编码为RCNB密文
44
+ # @param encoding 文本编码
45
+ def rcnb(encoding=nil)
46
+ RCNB.encode(self,encoding)
47
+ end
48
+
49
+ # 将RCNB密文字符串解码
50
+ # @param encoding 文本编码
51
+ def rcnb_decode(encoding=nil)
52
+ RCNB.decode(self,encoding)
53
+ end
54
+
55
+ # 判断字符串是否为RCNB密文
56
+ # @param encoding 文本编码
57
+ # @return [String,nil] 若是RCNB密文,则返回解码结果,否则返回nil
58
+ def rcnb?(encoding=nil)
59
+ begin
60
+ RCNB.decode(self,encoding)
61
+ rescue ArgumentError
62
+ nil
63
+ end
64
+ end
65
+
66
+ end
67
+ end
68
+ end
data/lib/rcnb/version.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  module RCNB
2
- VERSION='0.1.0'
2
+ # @private
3
+ VERSION='0.2.0'
3
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rcnb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - liggest
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-17 00:00:00.000000000 Z
11
+ date: 2021-07-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -19,6 +19,7 @@ files:
19
19
  - LICENSE
20
20
  - README.md
21
21
  - lib/rcnb.rb
22
+ - lib/rcnb/str.rb
22
23
  - lib/rcnb/version.rb
23
24
  homepage: https://github.com/liggest/rcnb.rb
24
25
  licenses: