1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
module LanguageServer
module Protocol
module Interface
#
# Value-object describing what options formatting should use.
#
class FormattingOptions
def initialize(tab_size:, insert_spaces:, trim_trailing_whitespace: nil, insert_final_newline: nil, trim_final_newlines: nil)
@attributes = {}
@attributes[:tabSize] = tab_size
@attributes[:insertSpaces] = insert_spaces
@attributes[:trimTrailingWhitespace] = trim_trailing_whitespace if trim_trailing_whitespace
@attributes[:insertFinalNewline] = insert_final_newline if insert_final_newline
@attributes[:trimFinalNewlines] = trim_final_newlines if trim_final_newlines
@attributes.freeze
end
#
# Size of a tab in spaces.
#
# @return [number]
def tab_size
attributes.fetch(:tabSize)
end
#
# Prefer spaces over tabs.
#
# @return [boolean]
def insert_spaces
attributes.fetch(:insertSpaces)
end
#
# Trim trailing whitespace on a line.
#
# @return [boolean]
def trim_trailing_whitespace
attributes.fetch(:trimTrailingWhitespace)
end
#
# Insert a newline character at the end of the file if one does not exist.
#
# @return [boolean]
def insert_final_newline
attributes.fetch(:insertFinalNewline)
end
#
# Trim all newlines after the final newline at the end of the file.
#
# @return [boolean]
def trim_final_newlines
attributes.fetch(:trimFinalNewlines)
end
attr_reader :attributes
def to_hash
attributes
end
def to_json(*args)
to_hash.to_json(*args)
end
end
end
end
end
|