rcnb 0.1.0 → 0.2.0
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.
- checksums.yaml +4 -4
- data/README.md +41 -1
- data/lib/rcnb.rb +32 -17
- data/lib/rcnb/str.rb +68 -0
- data/lib/rcnb/version.rb +2 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc00399dbaaa07059d89706fcd1fd3da1879bbb1f9c7705ed2d3f3ae3ad303b8
|
4
|
+
data.tar.gz: cf1e4013967904175450ec6ca403222f513873aaf385c967726d31a218cd5a7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f32bec5c338eeed5aea9bb335d9c89525d115224462a6aa2929ae617596907eabb99b0d020d0f1958aa682ce67d46399bfefec6c14743e19589913fbd5a8f75a
|
7
|
+
data.tar.gz: 39fb82d34ee859285180a5732047e2bed6f380209fd63512cd56489f9cc8ddcca25084cd0262be800c55250cb5b40df15a70f53650fc83bc97af4f3a2daa45f8
|
data/README.md
CHANGED
@@ -1,3 +1,43 @@
|
|
1
1
|
# rcnb.rb
|
2
2
|
|
3
|
-
|
3
|
+
[](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
|
-
#
|
2
|
+
# # rcnb
|
3
3
|
# A ruby implementation of RCNB
|
4
4
|
# ---
|
5
5
|
|
6
6
|
# RCNB模块
|
7
7
|
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
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
|
-
# [
|
111
|
-
#
|
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
|
-
# [
|
128
|
-
#
|
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
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.
|
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-
|
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:
|