Module: AnkiConnect::Client::NoteTypes

Included in:
AnkiConnect::Client
Defined in:
lib/anki_connect/note_types.rb

Overview

Methods to create and modify note types.

Instance Method Summary collapse

Instance Method Details

#add_note_type_field(note_type_name, field_name, index: nil) ⇒ nil

Adds a field to a note type.

Parameters:

  • note_type_name (String) —

    Note type name

  • field_name (String) —

    Field name

  • index (Integer, nil) (defaults to: nil) —

    Position (defaults to end)

Returns:

  • (nil)


215
216
217
218
219
# File 'lib/anki_connect/note_types.rb', line 215

def add_note_type_field(note_type_name, field_name, index: nil)
  params = { modelName: note_type_name, fieldName: field_name }
  params[:index] = index if index
  request(:modelFieldAdd, **params)
end

#add_note_type_template(note_type_name, template) ⇒ nil

Adds a template to a note type.

Parameters:

  • note_type_name (String) —

    Note type name

  • template (Hash) —

    Template with Name, Front, Back

Returns:

  • (nil)


176
177
178
# File 'lib/anki_connect/note_types.rb', line 176

def add_note_type_template(note_type_name, template)
  request(:modelTemplateAdd, modelName: note_type_name, template: normalize_template(template))
end

#create_note_type(name:, fields:, templates:, css: nil, cloze: false) ⇒ Hash

Creates a new note type.

Parameters:

  • name (String) —

    Note type name

  • fields (Array<String>) —

    Field names in order

  • templates (Array<Hash>) —

    Templates with name, front, and back

  • css (String, nil) (defaults to: nil) —

    CSS styling

  • cloze (Boolean) (defaults to: false) —

    true for a cloze note type

Returns:

  • (Hash) —

    Complete note type object



85
86
87
88
89
90
91
92
93
94
# File 'lib/anki_connect/note_types.rb', line 85

def create_note_type(name:, fields:, templates:, css: nil, cloze: false)
  params = {
    modelName: name,
    inOrderFields: fields,
    cardTemplates: templates.map { |template| normalize_template(template) },
    isCloze: cloze
  }
  params[:css] = css if css
  request(:createModel, **params)
end

#find_and_replace_in_note_type(note_type_name: nil, find:, replace:, front: true, back: true, css: true) ⇒ Integer

Find and replace in note type templates/CSS.

Parameters:

  • note_type_name (String, nil) (defaults to: nil) —

    Note type name, or nil for all note types

  • find (String) —

    Text to find

  • replace (String) —

    Replacement text

  • front (Boolean) (defaults to: true) —

    Search front templates

  • back (Boolean) (defaults to: true) —

    Search back templates

  • css (Boolean) (defaults to: true) —

    Search CSS

Returns:

  • (Integer) —

    Number of note types changed



139
140
141
142
143
144
145
146
147
148
149
# File 'lib/anki_connect/note_types.rb', line 139

def find_and_replace_in_note_type(note_type_name: nil, find:, replace:, front: true, back: true, css: true)
  request(
    :findAndReplaceInModels,
    modelName: note_type_name,
    findText: find,
    replaceText: replace,
    front: front,
    back: back,
    css: css
  )
end

#note_type_field_descriptions(note_type_name) ⇒ Array<String>

Gets field descriptions for a note type.

Parameters:

  • note_type_name (String) —

    Note type name

Returns:

  • (Array<String>) —

    Array of description strings



57
58
59
# File 'lib/anki_connect/note_types.rb', line 57

def note_type_field_descriptions(note_type_name)
  request(:modelFieldDescriptions, modelName: note_type_name)
end

#note_type_field_fonts(note_type_name) ⇒ Hash

Gets field fonts and sizes for a note type.

Parameters:

  • note_type_name (String) —

    Note type name

Returns:

  • (Hash) —

    Field names mapped to { font:, size: }



65
66
67
# File 'lib/anki_connect/note_types.rb', line 65

def note_type_field_fonts(note_type_name)
  request(:modelFieldFonts, modelName: note_type_name)
end

#note_type_field_names(note_type_name) ⇒ Array<String>

Gets field names for a note type.

Parameters:

  • note_type_name (String) —

    Note type name

Returns:

  • (Array<String>) —

    Array of field names in order



49
50
51
# File 'lib/anki_connect/note_types.rb', line 49

def note_type_field_names(note_type_name)
  request(:modelFieldNames, modelName: note_type_name)
end

#note_type_fields_on_templates(note_type_name) ⇒ Hash

Gets fields used on templates.

Parameters:

  • note_type_name (String) —

    Note type name

Returns:

  • (Hash) —

    Template names mapped to [questionFields, answerFields]



73
74
75
# File 'lib/anki_connect/note_types.rb', line 73

def note_type_fields_on_templates(note_type_name)
  request(:modelFieldsOnTemplates, modelName: note_type_name)
end

#note_type_name_from_id(note_type_id) ⇒ String

Gets a note type name by ID.

Parameters:

  • note_type_id (Integer) —

    Note type ID

Returns:

  • (String) —

    Note type name



25
26
27
# File 'lib/anki_connect/note_types.rb', line 25

def note_type_name_from_id(note_type_id)
  request(:modelNameFromId, modelId: note_type_id)
end

#note_type_names ⇒ Array<String>

Gets complete list of note type names.

Returns:

  • (Array<String>) —

    Array of note type names



10
11
12
# File 'lib/anki_connect/note_types.rb', line 10

def note_type_names
  request(:modelNames)
end

#note_type_names_and_ids ⇒ Hash

Gets note type names with their IDs.

Returns:

  • (Hash) —

    Note type names mapped to IDs



17
18
19
# File 'lib/anki_connect/note_types.rb', line 17

def note_type_names_and_ids
  request(:modelNamesAndIds)
end

#note_type_styling(note_type_name) ⇒ Hash

Gets CSS styling for a note type.

Parameters:

  • note_type_name (String) —

    Note type name

Returns:

  • (Hash) —

    Object with css property



108
109
110
# File 'lib/anki_connect/note_types.rb', line 108

def note_type_styling(note_type_name)
  request(:modelStyling, modelName: note_type_name)
end

#note_type_templates(note_type_name) ⇒ Hash

Gets templates for a note type.

Parameters:

  • note_type_name (String) —

    Note type name

Returns:

  • (Hash) —

    Template names mapped to { Front:, Back: }



100
101
102
# File 'lib/anki_connect/note_types.rb', line 100

def note_type_templates(note_type_name)
  request(:modelTemplates, modelName: note_type_name)
end

#note_types_by_id(ids) ⇒ Array<Hash>

Gets note types by ID.

Parameters:

  • ids (Array<Integer>) —

    Array of note type IDs

Returns:

  • (Array<Hash>) —

    Array of note type objects



33
34
35
# File 'lib/anki_connect/note_types.rb', line 33

def note_types_by_id(ids)
  request(:findModelsById, modelIds: ids)
end

#note_types_by_name(names) ⇒ Array<Hash>

Gets note types by name.

Parameters:

  • names (Array<String>) —

    Array of note type names

Returns:

  • (Array<Hash>) —

    Array of note type objects



41
42
43
# File 'lib/anki_connect/note_types.rb', line 41

def note_types_by_name(names)
  request(:findModelsByName, modelNames: names)
end

#remove_note_type_field(note_type_name, field_name) ⇒ nil

Removes a field from a note type.

Parameters:

  • note_type_name (String) —

    Note type name

  • field_name (String) —

    Field name

Returns:

  • (nil)


226
227
228
# File 'lib/anki_connect/note_types.rb', line 226

def remove_note_type_field(note_type_name, field_name)
  request(:modelFieldRemove, modelName: note_type_name, fieldName: field_name)
end

#remove_note_type_template(note_type_name, template_name) ⇒ nil

Removes a template from a note type.

Parameters:

  • note_type_name (String) —

    Note type name

  • template_name (String) —

    Template name

Returns:

  • (nil)


185
186
187
# File 'lib/anki_connect/note_types.rb', line 185

def remove_note_type_template(note_type_name, template_name)
  request(:modelTemplateRemove, modelName: note_type_name, templateName: template_name)
end

#rename_note_type_field(note_type_name, from:, to:) ⇒ nil

Renames a field.

Parameters:

  • note_type_name (String) —

    Note type name

  • from (String) —

    Current field name

  • to (String) —

    New field name

Returns:

  • (nil)


195
196
197
# File 'lib/anki_connect/note_types.rb', line 195

def rename_note_type_field(note_type_name, from:, to:)
  request(:modelFieldRename, modelName: note_type_name, oldFieldName: from, newFieldName: to)
end

#rename_note_type_template(note_type_name, from:, to:) ⇒ nil

Renames a template.

Parameters:

  • note_type_name (String) —

    Note type name

  • from (String) —

    Current template name

  • to (String) —

    New template name

Returns:

  • (nil)


157
158
159
# File 'lib/anki_connect/note_types.rb', line 157

def rename_note_type_template(note_type_name, from:, to:)
  request(:modelTemplateRename, modelName: note_type_name, oldTemplateName: from, newTemplateName: to)
end

#reposition_note_type_field(note_type_name, field_name, index) ⇒ nil

Moves a field to a new position.

Parameters:

  • note_type_name (String) —

    Note type name

  • field_name (String) —

    Field name

  • index (Integer) —

    New position (0-based)

Returns:

  • (nil)


205
206
207
# File 'lib/anki_connect/note_types.rb', line 205

def reposition_note_type_field(note_type_name, field_name, index)
  request(:modelFieldReposition, modelName: note_type_name, fieldName: field_name, index: index)
end

#reposition_note_type_template(note_type_name, template_name, index) ⇒ nil

Moves a template to a new position.

Parameters:

  • note_type_name (String) —

    Note type name

  • template_name (String) —

    Template name

  • index (Integer) —

    New position (0-based)

Returns:

  • (nil)


167
168
169
# File 'lib/anki_connect/note_types.rb', line 167

def reposition_note_type_template(note_type_name, template_name, index)
  request(:modelTemplateReposition, modelName: note_type_name, templateName: template_name, index: index)
end

#set_note_type_field_description(note_type_name, field_name, description) ⇒ Boolean

Sets description for a field.

Parameters:

  • note_type_name (String) —

    Note type name

  • field_name (String) —

    Field name

  • description (String) —

    Description text

Returns:

  • (Boolean) —

    true on success



256
257
258
# File 'lib/anki_connect/note_types.rb', line 256

def set_note_type_field_description(note_type_name, field_name, description)
  request(:modelFieldSetDescription, modelName: note_type_name, fieldName: field_name, description: description)
end

#set_note_type_field_font(note_type_name, field_name, font) ⇒ nil

Sets font for a field.

Parameters:

  • note_type_name (String) —

    Note type name

  • field_name (String) —

    Field name

  • font (String) —

    Font name

Returns:

  • (nil)


236
237
238
# File 'lib/anki_connect/note_types.rb', line 236

def set_note_type_field_font(note_type_name, field_name, font)
  request(:modelFieldSetFont, modelName: note_type_name, fieldName: field_name, font: font)
end

#set_note_type_field_font_size(note_type_name, field_name, size) ⇒ nil

Sets font size for a field.

Parameters:

  • note_type_name (String) —

    Note type name

  • field_name (String) —

    Field name

  • size (Integer) —

    Font size

Returns:

  • (nil)


246
247
248
# File 'lib/anki_connect/note_types.rb', line 246

def set_note_type_field_font_size(note_type_name, field_name, size)
  request(:modelFieldSetFontSize, modelName: note_type_name, fieldName: field_name, fontSize: size)
end

#update_note_type_styling(name, css:) ⇒ nil

Updates CSS styling for a note type.

Parameters:

  • name (String) —

    Note type name

  • css (String) —

    CSS styling

Returns:

  • (nil)


126
127
128
# File 'lib/anki_connect/note_types.rb', line 126

def update_note_type_styling(name, css:)
  request(:updateModelStyling, model: { name: name, css: css })
end

#update_note_type_templates(name, templates) ⇒ nil

Updates templates for a note type.

Parameters:

  • name (String) —

    Note type name

  • templates (Hash) —

    Template names mapped to optional front/back values

Returns:

  • (nil)


117
118
119
# File 'lib/anki_connect/note_types.rb', line 117

def update_note_type_templates(name, templates)
  request(:updateModelTemplates, model: { name: name, templates: normalize_template_updates(templates) })
end