saru 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
  SHA1:
3
- metadata.gz: 54e40e1b2916336389bf2811d3e64aafc94fcb93
4
- data.tar.gz: 7865d9d78b57022dfca8a761fe552b3e81a169d8
3
+ metadata.gz: ecf3d7b0302af9f092cb5aea7bc2bb1732da8f25
4
+ data.tar.gz: 564ee51bb24028530dafd6816f3b1c74239c76b3
5
5
  SHA512:
6
- metadata.gz: 65f02843d3b4cac52fefe8ecac345d5af06a3e2d8254d2375c41957b83eb8ba69cda9d93e95cf7c432176d92d2d62b322c793a8ef114dc27d0353ff995df68c5
7
- data.tar.gz: 1acafa17afe34e6a583603ec5e0af7c7f5337dabf8baecf448877239352e8e6f2d6557a23889ff82eb4216eebb275cea4f906ad9988a73d85546c2f9ea68740b
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
@@ -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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Saru
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -26,4 +26,5 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency "json", '~>1.8'
27
27
  spec.add_development_dependency "rake", "~> 10.0"
28
28
  spec.add_development_dependency "rspec", "~> 3.0"
29
+ spec.add_development_dependency "anki", "~> 0.0.4"
29
30
  end
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.1.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