본문으로 이동
  • 이 서버는 리버티게임의 개발용 베타 서버로, 게임 플레이 용도로 제작된 사이트가 아닙니다.
  • 리버티게임의 자동 인증된 사용자라면 개발에 필요한 관리자 권한을 신청할 수 있습니다.
  • 틀 및 기능별 소도구를 필요한 문서에만 선택적으로 로딩하는 테스트를 진행하고 있습니다. 작동하지 않는 문서가 있다면 담당자에게 알려주세요.

모듈:GameJSONParser/연구소

리버티게임(개발), 모두가 만들어가는 자유로운 게임


모듈 설명문서[보기] [편집] [역사] [새로 고침]
이 모듈은 현재 공사 중입니다!
2023년 08월 12일 01시 28분 27초까지 완성되기로 한 모듈입니다.
"모듈:GameJSONParser/연구소" 개발에 대한 문의 사항은 이곳에서 받고 있습니다.

리버티게임:게임 메타데이터/스키마.json를 lua를 사용한 외부 파서로 분석하기 위한 연구 페이지입니다.

별도의 모듈 수정 없이 메타데이터 스키마만 수정해서 자동으로 분류나 틀을 삽입하게끔 만드는것이 최종 목표입니다.

연구노트

1: JSON 스키마 정상작동여부

code_blocks 코드
{{#invoke:GameJSONParser|testParser}}
code
낙서장에서 확인
description 결과
에러: 모듈:Jsonschema 268번째 줄에서 Lua 오류: attempt to call upvalue 'loadstring' (a nil value).
  • 모듈:Jsonschema의 2번, 268번 라인에서 발생하는 오류
    존재하지 않는 loadstring 함수 호출이 발생 원인
    lua의 loadstring함수(5.2버전 미만에서는 load)는 js에서 eval과 같은 역할을 수행하는데 보안을 위해 미디어위키 모듈 스펙에서 삭제됨 [1]
    JSON스트링을 간단하게 lua 테이블로 가져오기 위해 즉시 실행하는것으로 확인되는데 mw.text.JSONDecode를 사용해 적절하게 교체 필요

도보시오


local p = {}
function p.testParser(frame)
    local jsonschema = require('모듈:Jsonschema')

    local validator = jsonschema.generate_validator {
        type = 'object',
        properties = {
          foo = { type = 'string' },
          bar = { type = 'number' },
        },
      }
      
    return mw.text.jsonEncode( validator{ foo='hello', bar=42 } )
end
 

function p.testImportJson(frame)
    local jsonschema = require('모듈:GameJSONParser/scheme.json')

      
    return mw.text.jsonEncode( jsonschema )
end
 

function p.test(frame)
    local jsonschema = require('모듈:Jsonschema')

    local validator = jsonschema.generate_validator {
        type = 'object',
        properties = {
          foo = { type = 'string' },
          bar = { type = 'number' },
        },
      }
      
    return mw.text.jsonEncode( validator{ foo='hello', bar=42 } )
end
 
function p.testjson(frame)
	local encoded = mw.text.jsonDecode(frame.args[1])
	return mw.text.jsonEncode(encoded["$defs"].platform.oneOf)
end
return p