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 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