saru 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 +10 -0
- data/lib/saru/anki.rb +50 -0
- data/lib/saru/list.rb +14 -0
- data/lib/saru/version.rb +1 -1
- data/saru.gemspec +1 -0
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ecf3d7b0302af9f092cb5aea7bc2bb1732da8f25
|
4
|
+
data.tar.gz: 564ee51bb24028530dafd6816f3b1c74239c76b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13b72901ee21ee2e9f6e8b7d764513e567f4804bc547a1078dd79e694759eb05000a161bbcd8e64860a4625e1f6c4ff8b945af3335836b4c0b8d71abf99835b0
|
7
|
+
data.tar.gz: fde8747521265edc2d4d8bbd7d87b41cec37c40fe5c261c10b1c53c9f3dc96ea57d67116ba5463ba8548ee042eb70a9f8b96efa97679c409597c17eca115f09a
|
data/README.md
CHANGED
@@ -117,6 +117,16 @@ require 'saru'
|
|
117
117
|
...
|
118
118
|
```
|
119
119
|
|
120
|
+
### Anki export
|
121
|
+
|
122
|
+
```ruby
|
123
|
+
# You can export any search to an anki deck, in case you need extra SRS
|
124
|
+
|
125
|
+
> Saru.kanji(1..26).srs_is_not_burned.total_incorrect_larger_than(10).export_to_anki
|
126
|
+
Anki file generated in saru_deck_1704211620.txt
|
127
|
+
=> nil
|
128
|
+
```
|
129
|
+
|
120
130
|
### Available search methods
|
121
131
|
|
122
132
|
#### SRS
|
data/lib/saru/anki.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'anki'
|
2
|
+
require 'date'
|
3
|
+
|
4
|
+
module Saru
|
5
|
+
class Anki
|
6
|
+
attr_reader :items
|
7
|
+
|
8
|
+
def initialize items
|
9
|
+
@items = items
|
10
|
+
end
|
11
|
+
|
12
|
+
def deck
|
13
|
+
raise NotImplementedError, 'Radicals not supported' if items.first.is_a?(Saru::Radical)
|
14
|
+
|
15
|
+
@deck ||= ::Anki::Deck.new card_headers: %w(front back tags),
|
16
|
+
card_data: card_data
|
17
|
+
end
|
18
|
+
|
19
|
+
def generate
|
20
|
+
file_path = "saru_deck_#{timestamp}.txt"
|
21
|
+
|
22
|
+
deck.generate_deck file: file_path
|
23
|
+
puts "Anki file generated in #{file_path}"
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def card_data
|
29
|
+
items.map do |item|
|
30
|
+
{
|
31
|
+
'front' => item.character,
|
32
|
+
'back' => back_for(item),
|
33
|
+
'tags' => item.class.name.split('::').last
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def timestamp
|
39
|
+
@timestamp ||= DateTime.now.strftime("%y%m%d%H%M")
|
40
|
+
end
|
41
|
+
|
42
|
+
def back_for item
|
43
|
+
case item
|
44
|
+
when Saru::Kanji then "#{item.meaning} —— #{item.important_reading}"
|
45
|
+
when Saru::Vocabulary then "#{item.meaning} —— #{item.kana}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
data/lib/saru/list.rb
CHANGED
@@ -3,6 +3,7 @@ require 'saru/list/unlocked_date'
|
|
3
3
|
require 'saru/list/incorrect'
|
4
4
|
require 'saru/list/srs'
|
5
5
|
require 'saru/list/kanji_related'
|
6
|
+
require 'saru/anki'
|
6
7
|
|
7
8
|
module Saru
|
8
9
|
class List
|
@@ -19,8 +20,21 @@ module Saru
|
|
19
20
|
@items = items
|
20
21
|
end
|
21
22
|
|
23
|
+
def to_anki
|
24
|
+
anki.deck
|
25
|
+
end
|
26
|
+
|
27
|
+
def export_to_anki
|
28
|
+
anki.generate
|
29
|
+
end
|
30
|
+
|
22
31
|
def_delegator :@items,
|
23
32
|
:size
|
24
33
|
|
34
|
+
private
|
35
|
+
|
36
|
+
def anki
|
37
|
+
@anki ||= Saru::Anki.new(items)
|
38
|
+
end
|
25
39
|
end
|
26
40
|
end
|
data/lib/saru/version.rb
CHANGED
data/saru.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Víctor
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: anki
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.0.4
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.0.4
|
83
97
|
description: Wanikani API Wrapper for the user's items (radicals, kanji and vocabulary)
|
84
98
|
email:
|
85
99
|
- victor.martin84@gmail.com
|
@@ -97,6 +111,7 @@ files:
|
|
97
111
|
- bin/console
|
98
112
|
- bin/setup
|
99
113
|
- lib/saru.rb
|
114
|
+
- lib/saru/anki.rb
|
100
115
|
- lib/saru/builder.rb
|
101
116
|
- lib/saru/connection.rb
|
102
117
|
- lib/saru/connection/base.rb
|