view src/luan/modules/Parsers.luan @ 1802:ca98dee04e08 default tip

add Parsers.json_null
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 21 Apr 2024 21:25:15 -0600
parents f8f5c51f5b36
children
line wrap: on
line source

require "java"
local BBCode = require "java:goodjava.bbcode.BBCode"
local BBCodeLuan = require "java:luan.modules.parsers.BBCodeLuan"
local Csv = require "java:luan.modules.parsers.Csv"
local Theme = require "java:luan.modules.parsers.Theme"
local Xml = require "java:luan.modules.parsers.Xml"
local Xml2 = require "java:luan.modules.parsers.Xml2"
local XmlElement = require "java:goodjava.xml.XmlElement"
local BasicLuan = require "java:luan.modules.BasicLuan"


local Parsers = {}

Parsers.bbcode_encode = BBCode.encode
Parsers.bbcode_parse = BBCodeLuan.parse
Parsers.csv_to_list = Csv.toList
Parsers.json_null = BasicLuan.json_null
Parsers.json_string = BasicLuan.json_string
Parsers.theme_to_luan = Theme.toLuan
Parsers.xml_encode = XmlElement.encode
Parsers.xml_parse = Xml.parse
Parsers.xml_string = Xml.toString
Parsers.xml2_parse = Xml2.parse
Parsers.xml2_string = Xml2.toString

local Luan = require "luan:Luan.luan"
local error = Luan.error
local type = Luan.type or error()
local Table = require "luan:Table.luan"
local java_to_table_deep = Table.java_to_table_deep or error()
local JsonParser = require "java:goodjava.json.JsonParser"
local ParseException = require "java:goodjava.parser.ParseException"

-- converts json string to luan object
function Parsers.json_parse(s)
	local obj
	try
		obj = JsonParser.parse(s)
	catch e
		local java = e.java.getCause()
		if java~=nil and java.instanceof(ParseException) then
			e.message = java.getSuperMessage()
			e.text = java.text
			e.error_index = java.errorIndex
			e.high_index = java.highIndex
		end
		e.throw()
	end
	return type(obj)=="java" and java_to_table_deep(obj) or obj
end

return Parsers