Fixed import function, fixed documentation warnings issued by YARD

This commit is contained in:
Yessiest 2023-10-16 15:29:39 +04:00
parent 447f51570a
commit 000e53e742
14 changed files with 39 additions and 24 deletions

View File

@ -2,7 +2,7 @@
Gem::Specification.new do |spec| Gem::Specification.new do |spec|
spec.name = "landline" spec.name = "landline"
spec.version = "0.9.3" spec.version = "0.10.0"
spec.summary = "Elegant HTTP DSL" spec.summary = "Elegant HTTP DSL"
spec.description = <<~DESC spec.description = <<~DESC
Landline is a no-hard-dependencies HTTP routing DSL that was made entirely for fun. Landline is a no-hard-dependencies HTTP routing DSL that was made entirely for fun.

View File

@ -5,7 +5,7 @@ module Landline
# Probe (and subclasses) DSL construct # Probe (and subclasses) DSL construct
module ProbeConstructors module ProbeConstructors
# Create a new erb template # Create a new erb template
# @see {Landline::Template#new} # @see Landline::Template#new
def erb(input, vars = {}) def erb(input, vars = {})
Landline::Templates::ERB.new(input, Landline::Templates::ERB.new(input,
vars, vars,
@ -14,7 +14,7 @@ module Landline
end end
# Create a new erb template using Erubi engine # Create a new erb template using Erubi engine
# @see {Landline::Template#new} # @see Landline::Template#new
# @param freeze [Boolean] whether to use frozen string literal # @param freeze [Boolean] whether to use frozen string literal
# @param capture [Boolean] whether to enable output capturing # @param capture [Boolean] whether to enable output capturing
def erubi(input, vars = {}, freeze: true, capture: false) def erubi(input, vars = {}, freeze: true, capture: false)

View File

@ -12,9 +12,10 @@ module Landline
# Create a status code handler on path. # Create a status code handler on path.
# Recursively applies to all paths unless overridden. # Recursively applies to all paths unless overridden.
# @param [Integer, nil] Specify a status code to handle # @param code [Integer, nil] Specify a status code to handle
def handle(code = "default", &block) # @param block [#call] Block to run on given code
@origin.properties["handle.#{code}"] = block def handle(code = nil, &block)
@origin.properties["handle.#{code || 'default'}"] = block
end end
# Insert a pass-through pipeline into request processing # Insert a pass-through pipeline into request processing

View File

@ -8,8 +8,17 @@ module Landline
# Common methods for template contexts # Common methods for template contexts
module TemplateMethods module TemplateMethods
# Import a template part # Import a template part
# @param filepath [String, File] path to the file (or the file itself)
# @return [String] compiled template
def import(filepath) def import(filepath)
@parent_template.import(file(filepath)).run template = if filepath.is_a? File
filepath
elsif filepath.start_with? "/"
File.open(filepath)
else
file(filepath)
end
@parent_template.import(template).run
end end
end end
end end

View File

@ -35,7 +35,7 @@ module Landline
end end
# Try to navigate the path. Run method callback in response. # Try to navigate the path. Run method callback in response.
# @param [Landline::Request] # @param request [Landline::Request]
# @return [Boolean] # @return [Boolean]
def go(request) def go(request)
# rejected at pattern # rejected at pattern

View File

@ -52,7 +52,7 @@ module Landline
# - underscores # - underscores
# - dashes # - dashes
class Glob class Glob
# @param input [String] Glob pattern # @param pattern [String] Glob pattern
def initialize(pattern) def initialize(pattern)
pattern = Landline::PatternMatching.canonicalize(pattern) pattern = Landline::PatternMatching.canonicalize(pattern)
pieces = pattern.split(TOKENS) pieces = pattern.split(TOKENS)

View File

@ -39,7 +39,7 @@ module Landline
end end
# Test if input is convertible and if it should be converted. # Test if input is convertible and if it should be converted.
# @param input # @param string [String] input to test conversion on
# @return [Boolean] Input can be safely converted to Glob # @return [Boolean] Input can be safely converted to Glob
def self.can_convert?(string) def self.can_convert?(string)
string.is_a? Regexp string.is_a? Regexp

View File

@ -7,7 +7,7 @@ module Landline
# Probe that executes a callback on request # Probe that executes a callback on request
class Handler < Landline::Probe class Handler < Landline::Probe
# @param path [Object] # @param path [Object]
# @param parent [Landline::Node] # @param args [Hash] hashed parameters to passthrough to Probe
# @param exec [#call] # @param exec [#call]
def initialize(path, **args, &exec) def initialize(path, **args, &exec)
super(path, **args) super(path, **args)

View File

@ -9,7 +9,6 @@ module Landline
class Serve < Landline::Probe class Serve < Landline::Probe
# @param path [Object] # @param path [Object]
# @param parent [Landline::Node] # @param parent [Landline::Node]
# @param exec [#call]
def initialize(path, parent:) def initialize(path, parent:)
super(path, parent: parent, filepath: true) super(path, parent: parent, filepath: true)
end end

View File

@ -86,11 +86,14 @@ module Landline
# ... (stub) # ... (stub)
end end
# Import a template from within current template # Import a template from within current template.
def import(filepath) # @param file [File] template file to import
filepath = filepath.is_a? File ? filepath : File.open(filepath) # @return [Landline::Template] loaded tempalte
# @sg-ignore def import(file)
newtemp = self.class.new(filepath, {}, parent: @parent) newtemp = self.class.new(file,
{},
parent: @parent,
filename: file.path)
newtemp.binding = @binding newtemp.binding = @binding
newtemp newtemp
end end

View File

@ -7,7 +7,7 @@ module Landline
module Templates module Templates
# ERB Template language adapter # ERB Template language adapter
class ERB < Landline::Template class ERB < Landline::Template
# @see {Landline::Template#new} # (see Landline::Template#new)
def initialize(input, vars = nil, parent:, filename:) def initialize(input, vars = nil, parent:, filename:)
super super
varname = "_part_#{SecureRandom.hex(10)}".to_sym varname = "_part_#{SecureRandom.hex(10)}".to_sym

View File

@ -7,7 +7,7 @@ module Landline
module Templates module Templates
# Erubi (ERB) template language adapter # Erubi (ERB) template language adapter
class Erubi < Landline::Template class Erubi < Landline::Template
# @see {Landline::Template#new} # (see Landline::Template#new)
def initialize(input, def initialize(input,
vars = nil, vars = nil,
**ext) **ext)

View File

@ -1267,7 +1267,7 @@ module Landline
}.freeze }.freeze
# Get MIME type by file extension # Get MIME type by file extension
# @param ext [String] filename # @param file [String] filename
# @return [String] MIME type, defaults to "application/octet-stream" # @return [String] MIME type, defaults to "application/octet-stream"
def self.get_mime_type(file) def self.get_mime_type(file)
MIME[file.match(/\.(\w+)$/)&.[](1)] or "application/octet-stream" MIME[file.match(/\.(\w+)$/)&.[](1)] or "application/octet-stream"

View File

@ -9,6 +9,8 @@ require_relative 'html'
module Landline module Landline
module Util module Util
FormPart = Struct.new(:data, :name, :filename,
:filetype, :tempfile, :headers)
# Valid element of form data with headers # Valid element of form data with headers
# @!attribute headers [Hash] headers recevied from form data # @!attribute headers [Hash] headers recevied from form data
# @!attribute name [String] name of the form part # @!attribute name [String] name of the form part
@ -16,8 +18,7 @@ module Landline
# @!attribute filename [String,nil] Original name of the sent file # @!attribute filename [String,nil] Original name of the sent file
# @!attribute filetype [String,nil] MIME-type of the file # @!attribute filetype [String,nil] MIME-type of the file
# @!attribute tempfile [File,nil] Temporary file for storing sent file data. # @!attribute tempfile [File,nil] Temporary file for storing sent file data.
FormPart = Struct.new(:data, :name, :filename, class FormPart
:filetype, :tempfile, :headers) do
# Is this form part a file or plain data? # Is this form part a file or plain data?
# @return [Boolean] # @return [Boolean]
def file? def file?
@ -135,7 +136,8 @@ module Landline
end end
# Setup file metadata # Setup file metadata
# @part part [FormPart] # @param part [Landline::Util::FormPart]
# @return [void]
def setup_file_meta(part) def setup_file_meta(part)
part.name = part.headers.dig("content-disposition", 1, "name") part.name = part.headers.dig("content-disposition", 1, "name")
part.filename = part.headers.dig("content-disposition", 1, "filename") part.filename = part.headers.dig("content-disposition", 1, "filename")
@ -144,7 +146,8 @@ module Landline
end end
# Setup plain metadata # Setup plain metadata
# @part part [FormPart] # @param part [Landline::Util::FormPart]
# @return [void]
def setup_data_meta(part) def setup_data_meta(part)
part.name = part.headers.dig("content-disposition", 1, "name") part.name = part.headers.dig("content-disposition", 1, "name")
end end