pnote_client 1.2.3 → 2.1.1

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
  SHA256:
3
- metadata.gz: 51962b2b01db21b479a44a054f80d1b7de0eb4041a5696d982f3cf252659a38f
4
- data.tar.gz: 4a621d7b873d913b31747aaa1066d5317d597ea0e1dc2c932afcb2bd46d6b5f9
3
+ metadata.gz: 6768e747c37505e8606dd774b8ff50bed95eaa2c76673aa6ab26ad39a640f7f5
4
+ data.tar.gz: 87eee8422ea2646fbe047558f4839915c5128258a87fd5c4ab305db9fa51d516
5
5
  SHA512:
6
- metadata.gz: 2cf225c6e104c0ea88ca8640f4056ed27d3fb2a1050582c9ba3a3eb104dd2bf9e29e6c775348fd0368d260c5bbdb0fbe20a3999e5daef3cf31c549d2f5092f21
7
- data.tar.gz: 8c1f886afdd86384f60429c6b6dccae923d23b467a593345e89598dcc0e3047743f1b39070445d04677aef52c49acfac728854a6e210ed5dda5f44ed8076602a
6
+ metadata.gz: d6cede281e8d80463854ee8beb831b675b262de076393ec39458c21d053f8fbe2e66c323cd1858ba25888d77a7bca9c6709f671d3558ac0d772d54048e9163ee
7
+ data.tar.gz: 30a5fe6cc5bdda30450e4dbd94c3641c6d93847de1d871491a8a7c6ef0bcc58d3a6fc4ceb2308036857c5a36756e985baea7eae8954dc4fce702c7896bb12eea
data/exe/pnote_to_json CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  require 'json'
5
5
  require 'optparse'
6
+ require 'pnote_client'
6
7
  require 'pnote_client/converters/hml_to_pnote_converter'
7
8
  require 'pnote_client/converters/pnote_to_json_converter'
8
9
  require 'pnote_client/documents/hml'
@@ -22,7 +23,9 @@ def write_file(content, filepath)
22
23
  end
23
24
 
24
25
  options = {
25
- include_image_data: false
26
+ config_filepath: File.join(File.dirname(__FILE__), '..', 'config.json'),
27
+ include_image_data: false,
28
+ show_time: 600
26
29
  }
27
30
 
28
31
  optparser = OptionParser.new do |opt|
@@ -43,6 +46,10 @@ optparser = OptionParser.new do |opt|
43
46
  opt.on('-c', '--config [FILEPATH]', String, 'File path of configuration file(`config.json`). Default is `../config.json`') do |filepath|
44
47
  options[:config_filepath]
45
48
  end
49
+
50
+ opt.on('-t', '--time [TIME]', String, '선생님 코멘트 노출시간을 입력해주세요. 기본값 600') do |show_time|
51
+ options[:show_time] = show_time.to_i
52
+ end
46
53
  end
47
54
  optparser.parse!
48
55
 
@@ -50,15 +57,34 @@ if options[:input_filepath].nil? || options[:output_filepath].nil?
50
57
  abort(optparser.help)
51
58
  end
52
59
 
60
+ notice = <<-NOTICE
61
+ [PnoteClient Version]
62
+ #{PnoteClient::VERSION}
63
+
64
+ [변환설정]
65
+ 입력파일 경로: #{options[:input_filepath]}
66
+ 출력파일 경로: #{options[:output_filepath]}
67
+ 이미지: #{options[:include_image_data] ? '포함' : '제외'}
68
+ 설정파일 경로: #{options[:config_filepath]}
69
+ 코멘트 노출시간 단위: #{options[:show_time]}초
70
+
71
+ 계속 진행하시겠습니까? (y/n)
72
+ NOTICE
73
+ puts notice
74
+ response = gets.chomp.downcase
75
+
76
+ if response != 'y'
77
+ abort
78
+ end
79
+
53
80
  display = PnoteClient::ConsoleDisplay.new
54
- default_config_file_path = File.join(File.dirname(__FILE__), '..', 'config.json')
55
- config_content = read_file(options[:config_filepath] || default_config_file_path)
81
+ config_content = read_file(options[:config_filepath])
56
82
  config = JSON.parse(config_content, symbolize_names: true)
57
83
  type_style_mapper = config[:hml_pnote_styles]
58
84
 
59
85
  hml_document = PnoteClient::Documents::Hml.parse_from_file(options[:input_filepath])
60
- hml_to_pnote_converter = PnoteClient::Converters::HmlToPnoteConverter.new(hml_document, type_style_mapper)
86
+ hml_to_pnote_converter = PnoteClient::Converters::HmlToPnoteConverter.new(hml_document, show_time: options[:show_time], type_style_mapper: type_style_mapper, include_image_data: options[:include_image_data])
61
87
  hml_to_pnote_converter.delegate = display
62
88
  pnote_document = hml_to_pnote_converter.convert
63
- json = PnoteClient::Converters::PnoteToJsonConverter.new(pnote_document, include_image_data: options[:include_image_data]).convert
89
+ json = PnoteClient::Converters::PnoteToJsonConverter.new(pnote_document).convert
64
90
  write_file(json, options[:output_filepath])
@@ -2,8 +2,7 @@ require 'pnote_client/documents/pnote'
2
2
  require 'pnote_client/documents/pnote/chapter'
3
3
  require 'pnote_client/documents/pnote/sub_chapter'
4
4
  require 'pnote_client/documents/pnote/concept'
5
- require 'pnote_client/documents/pnote/exercise'
6
- require 'pnote_client/documents/pnote/practice'
5
+ require 'pnote_client/documents/pnote/problem'
7
6
  require 'pnote_client/documents/pnote/image'
8
7
  require 'pnote_client/documents/pnote/teacher_comment'
9
8
  require 'pnote_client/documents/hml/paragraph_reader'
@@ -14,9 +13,11 @@ module PnoteClient
14
13
 
15
14
  attr_accessor :delegate
16
15
 
17
- def initialize(hml_document, type_style_mapper = {})
16
+ def initialize(hml_document, show_time:, type_style_mapper: {}, include_image_data: false)
18
17
  @hml_document = hml_document
18
+ @show_time = show_time
19
19
  @type_style_mapper = type_style_mapper
20
+ @include_image_data = include_image_data
20
21
 
21
22
  @current_chapter = nil
22
23
  @current_sub_chapter = nil
@@ -54,7 +55,7 @@ module PnoteClient
54
55
  if is_continuous
55
56
  @current_exercise.add_question_line(paragraph.content) if @current_exercise
56
57
  else
57
- new_exercise = Documents::Pnote::Exercise.new
58
+ new_exercise = Documents::Pnote::Problem.new
58
59
  new_exercise.question = paragraph.content
59
60
  add_new_exercise_to_sub_chapter(@current_sub_chapter, new_exercise) if @current_sub_chapter
60
61
  end
@@ -68,7 +69,7 @@ module PnoteClient
68
69
  if @practice_continuous
69
70
  @current_practice.add_question_line(paragraph.content) if @current_practice
70
71
  else
71
- new_practice = Documents::Pnote::Practice.new
72
+ new_practice = Documents::Pnote::Problem.new
72
73
  new_practice.question = paragraph.content
73
74
 
74
75
  if @current_sub_chapter
@@ -101,7 +102,7 @@ module PnoteClient
101
102
  if is_continuous
102
103
  @current_teacher_comment.add_content_line(footnote_paragraph.content) if @current_teacher_comment
103
104
  else
104
- new_teacher_comment = Documents::Pnote::TeacherComment.new(index)
105
+ new_teacher_comment = Documents::Pnote::TeacherComment.new(show_time: (index + 1) * @show_time)
105
106
  new_teacher_comment.content = footnote_paragraph.content
106
107
  add_new_teacher_comment_to_practice(@current_practice, new_teacher_comment) if @current_practice
107
108
  end
@@ -121,7 +122,10 @@ module PnoteClient
121
122
 
122
123
  binary_count = @hml_document.bin_items.length
123
124
  @hml_document.bin_items.each_with_index do |bin_item, index|
124
- pnote_document.add_image(Documents::Pnote::Image.new(bin_item.id, bin_item.format, bin_item.size, bin_item.raw_data))
125
+ raw_data = @include_image_data ? bin_item.raw_data : nil
126
+ pnote_document.add_image(
127
+ Documents::Pnote::Image.new(bin_item.id, bin_item.format, bin_item.size, raw_data)
128
+ )
125
129
 
126
130
  @delegate.binary_converted(count: binary_count, current: index) if @delegate
127
131
  end
@@ -1,16 +1,17 @@
1
1
  require 'json'
2
+ require 'pnote_client'
2
3
 
3
4
  module PnoteClient
4
5
  module Converters
5
6
  class PnoteToJsonConverter
6
7
 
7
- def initialize(pnote_document, include_image_data: false)
8
+ def initialize(pnote_document)
8
9
  @pnote_document = pnote_document
9
- @include_image_data = include_image_data
10
10
  end
11
11
 
12
12
  def convert
13
13
  result = {
14
+ pnote_client_version: PnoteClient::VERSION,
14
15
  chapters: [],
15
16
  images: [],
16
17
  created_at: Time.now.strftime("%Y-%m-%d %H:%M")
@@ -21,7 +22,7 @@ module PnoteClient
21
22
  id: image.id,
22
23
  format: image.format,
23
24
  size: image.size,
24
- raw_data: @include_image_data ? image.raw_data : nil
25
+ raw_data: image.raw_data
25
26
  }
26
27
  end
27
28
 
@@ -42,14 +43,7 @@ module PnoteClient
42
43
 
43
44
  # 심화단원의 실전 문제
44
45
  chapter.practices.each do |practice|
45
- practice_hash = {
46
- question: practice.question,
47
- answer: practice.answer,
48
- explaination: practice.explaination,
49
- teacher_comments: practice.teacher_comments.sort_by {|tc| tc.index }.map(&:content),
50
- choices: practice.choices,
51
- tip: practice.tip
52
- }
46
+ practice_hash = get_problem_hash(practice)
53
47
  sub_chapter_hash[:practices] << practice_hash
54
48
  end
55
49
  else # 일반 단원일경우 소단원 채우기
@@ -72,24 +66,12 @@ module PnoteClient
72
66
  end
73
67
 
74
68
  sub_chapter.exercises.each do |exercise|
75
- exercise_hash = {
76
- question: exercise.question,
77
- answer: exercise.answer,
78
- explaination: exercise.explaination,
79
- choices: exercise.choices
80
- }
69
+ exercise_hash = get_problem_hash(exercise)
81
70
  sub_chapter_hash[:exercises] << exercise_hash
82
71
  end
83
72
 
84
73
  sub_chapter.practices.each do |practice|
85
- practice_hash = {
86
- question: practice.question,
87
- answer: practice.answer,
88
- explaination: practice.explaination,
89
- teacher_comments: practice.teacher_comments.sort_by {|tc| tc.index }.map(&:content),
90
- choices: practice.choices,
91
- tip: practice.tip
92
- }
74
+ practice_hash = get_problem_hash(practice)
93
75
  sub_chapter_hash[:practices] << practice_hash
94
76
  end
95
77
  end
@@ -98,6 +80,24 @@ module PnoteClient
98
80
 
99
81
  return result.to_json
100
82
  end
83
+
84
+ private
85
+
86
+ def get_problem_hash(problem)
87
+ {
88
+ question: problem.question,
89
+ answer: problem.answer,
90
+ explaination: problem.explaination,
91
+ teacher_comments: problem.teacher_comments.sort_by {|tc| tc.show_time }.map do |tc|
92
+ {
93
+ show_time: tc.show_time,
94
+ content: tc.content
95
+ }
96
+ end,
97
+ choices: problem.choices,
98
+ tip: problem.tip
99
+ }
100
+ end
101
101
  end
102
102
  end
103
103
  end
@@ -4,8 +4,8 @@ module PnoteClient
4
4
  class Chapter
5
5
  attr_reader :title, :sub_chapters, :practices
6
6
 
7
- def initialize
8
- @title = nil
7
+ def initialize(title: nil)
8
+ @title = title
9
9
  @sub_chapters = []
10
10
  @practices = []
11
11
  end
@@ -8,7 +8,7 @@ module PnoteClient
8
8
 
9
9
  attr_reader :title, :content
10
10
 
11
- def initialize
11
+ def initialize(title: nil, content: nil)
12
12
  @title = nil
13
13
  @content = nil
14
14
  end
@@ -3,18 +3,19 @@ require 'pnote_client/utils/string_util'
3
3
  module PnoteClient
4
4
  module Documents
5
5
  class Pnote
6
- # 연습문제(Exercise)와 실전문제(Practice)의 부모 클래스
7
- # 중복되는 부분을 재사용하기위해 만듦
8
6
  class Problem
9
7
  include Utils::StringUtil
10
8
 
11
9
  attr_accessor :question, :explaination
10
+ attr_accessor :teacher_comments, :tip
12
11
 
13
- def initialize
14
- @question = nil
15
- @answer = nil
16
- @explaination = nil
17
- @choice = nil
12
+ def initialize(
13
+ question: nil, answer: nil, explaination: nil,
14
+ choices: nil, choice: nil, teacher_comments: [], tip: nil
15
+ )
16
+
17
+ @question, @answer, @explaination, @choices, @choice, @teacher_comments, @tip =
18
+ question, answer, explaination, choices, choice, teacher_comments, tip
18
19
  end
19
20
 
20
21
  def add_question_line(new_line)
@@ -39,11 +40,20 @@ module PnoteClient
39
40
  end
40
41
 
41
42
  def choices
43
+ return @choices if @choices
42
44
  return [] if @choice.nil?
43
45
 
44
46
  choice_number_pattern = /①|②|③|④|⑤/
45
47
  return @choice.split(choice_number_pattern).reject {|el| el.empty?}.map {|el| el.strip}
46
48
  end
49
+
50
+ def add_teacher_comment(new_teacher_comment)
51
+ @teacher_comments << new_teacher_comment
52
+ end
53
+
54
+ def add_tip_line(new_line)
55
+ @tip = add_line(@tip, new_line)
56
+ end
47
57
  end
48
58
  end
49
59
  end
@@ -4,8 +4,8 @@ module PnoteClient
4
4
  class SubChapter
5
5
  attr_reader :title, :concepts, :exercises, :practices
6
6
 
7
- def initialize
8
- @title = nil
7
+ def initialize(title: nil)
8
+ @title = title
9
9
  @concepts = []
10
10
  @exercises = []
11
11
  @practices = []
@@ -6,11 +6,11 @@ module PnoteClient
6
6
  class TeacherComment
7
7
  include Utils::StringUtil
8
8
 
9
- attr_accessor :index, :content
9
+ attr_accessor :content, :show_time
10
10
 
11
- def initialize(index)
12
- @index = index
13
- @content = nil
11
+ def initialize(content: nil, show_time: 0)
12
+ @show_time = show_time
13
+ @content = content
14
14
  end
15
15
 
16
16
  def add_content_line(new_line)
@@ -1,3 +1,3 @@
1
1
  module PnoteClient
2
- VERSION = "1.2.3"
2
+ VERSION = "2.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pnote_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - bluesh55
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-12 00:00:00.000000000 Z
11
+ date: 2019-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -118,9 +118,7 @@ files:
118
118
  - lib/pnote_client/documents/pnote.rb
119
119
  - lib/pnote_client/documents/pnote/chapter.rb
120
120
  - lib/pnote_client/documents/pnote/concept.rb
121
- - lib/pnote_client/documents/pnote/exercise.rb
122
121
  - lib/pnote_client/documents/pnote/image.rb
123
- - lib/pnote_client/documents/pnote/practice.rb
124
122
  - lib/pnote_client/documents/pnote/problem.rb
125
123
  - lib/pnote_client/documents/pnote/sub_chapter.rb
126
124
  - lib/pnote_client/documents/pnote/teacher_comment.rb
@@ -1,10 +0,0 @@
1
- require 'pnote_client/documents/pnote/problem'
2
-
3
- module PnoteClient
4
- module Documents
5
- class Pnote
6
- class Exercise < Problem
7
- end
8
- end
9
- end
10
- end
@@ -1,25 +0,0 @@
1
- require 'pnote_client/documents/pnote/problem'
2
-
3
- module PnoteClient
4
- module Documents
5
- class Pnote
6
- class Practice < Problem
7
- attr_accessor :teacher_comments, :tip
8
-
9
- def initialize
10
- super
11
- @teacher_comments = []
12
- @tip = nil
13
- end
14
-
15
- def add_teacher_comment(new_teacher_comment)
16
- @teacher_comments << new_teacher_comment
17
- end
18
-
19
- def add_tip_line(new_line)
20
- @tip = add_line(@tip, new_line)
21
- end
22
- end
23
- end
24
- end
25
- end