Парс по канону

$Mr.R1ch$

Активный
Автор темы
285
40
Версия MoonLoader
Другое
Столкнулся с такой проблемой. Что то типо умного розыска на mimgui, и чтобы не занимать триллионы строчек, решил сделать через JSON таблицу и цикл for. Сами главы будут в imgui.CollapsingHeader, внутри же будут статьи, но если это просто парсить внутри CollapsingHeader, то получится что все статьи будут в этих функциях, а надо сделать так скажем по "канону" (пример, в первой главе 4 пункта, и надо чтобы эти 4 пункта были только в первой главе, нигде больше). Сам то я не знаю как сделать, поэтому хочу научиться и понять как это самому сделать.
Пример таблицы (можно и по другому сделать, хз как удобнее):
{
      "head" : [
      "Глава 1. Вооруженное нападение",
      "Глава 2. Коррупция"
      ],
      "article1" : [
      "1.1 Вооруженное нападение | 6*.",
      "1.2 Тест..."
      ]
}
Lua:
local file = io.open("test.json", "r")
a = file:read("*a")
file:close()
test = decodeJson(a)
for test, article in pairs(test["head"]) do
  if u8(article):find(ffi.string(search)) then    

  if imgui.CollapsingHeader(u8(article)) then
  for test2, article1 in pairs(test["test2"]) do -- да тут бред полный, не знаю как должно выглядеть 
  imgui.Selectable(u8(article1))
       end
    end
 end
   end
 
  • Ха-ха
Реакции: Vespan
Решение
Как тоже самое сделать только с действиями при нажатии? То есть, нажимая на каждую статью, будет выводиться разный текст, тоже как по канону сделать. Я щас пытался но оно криво получилось
измени немного структуру статей:
в articles:
"articles": [
    {
        "content": "1.1 Вооруженное нападение",
        "stars": 6
    },
    {
        "content": "1.2 Тест...",
        "stars": 1
    }
]

и как-то используй:
Lua:
for ic, chapter in ipairs(t) do
    if imgui.CollapsingHeader(chapter.chapter) then
        for ia, article in ipairs(chapter.articles) do
            if imgui.Selectable(article.content) then
                --[[
                    article.stars - уровень розыска для конкретной статьи
                    ic - номер главы...

wojciech?

Известный
Проверенный
352
236
можно сделать json файлик в таком формате:
структура кодекса:
[
    {
        "chapter": "Глава 1. Вооруженное нападение",
        "articles": [
            "1.1 Вооруженное нападение | 6*.",
            "1.2 Тест..."
        ]
    },
    {
        "chapter": "Глава 2. ?",
        "articles": [
            "Статья 1",
            "Статья 2"
        ]
    }
]

декодировать его и относительно удобно парсить:
Lua:
local t = decodeJson(...)

for ic, chapter in ipairs(t) do
    if imgui.CollapsingHeader(chapter.chapter) then
        for ia, article in ipairs(chapter.articles) do
             imgui.Selectable(article)
        end
    end
end
 
  • Нравится
Реакции: AnWu

$Mr.R1ch$

Активный
Автор темы
285
40
можно сделать json файлик в таком формате:
структура кодекса:
[
    {
        "chapter": "Глава 1. Вооруженное нападение",
        "articles": [
            "1.1 Вооруженное нападение | 6*.",
            "1.2 Тест..."
        ]
    },
    {
        "chapter": "Глава 2. ?",
        "articles": [
            "Статья 1",
            "Статья 2"
        ]
    }
]

декодировать его и относительно удобно парсить:
Lua:
local t = decodeJson(...)

for ic, chapter in ipairs(t) do
    if imgui.CollapsingHeader(chapter.chapter) then
        for ia, article in ipairs(chapter.articles) do
             imgui.Selectable(article)
        end
    end
end
Как тоже самое сделать только с действиями при нажатии? То есть, нажимая на каждую статью, будет выводиться разный текст, тоже как по канону сделать. Я щас пытался но оно криво получилось
 

wojciech?

Известный
Проверенный
352
236
Как тоже самое сделать только с действиями при нажатии? То есть, нажимая на каждую статью, будет выводиться разный текст, тоже как по канону сделать. Я щас пытался но оно криво получилось
измени немного структуру статей:
в articles:
"articles": [
    {
        "content": "1.1 Вооруженное нападение",
        "stars": 6
    },
    {
        "content": "1.2 Тест...",
        "stars": 1
    }
]

и как-то используй:
Lua:
for ic, chapter in ipairs(t) do
    if imgui.CollapsingHeader(chapter.chapter) then
        for ia, article in ipairs(chapter.articles) do
            if imgui.Selectable(article.content) then
                --[[
                    article.stars - уровень розыска для конкретной статьи
                    ic - номер главы
                    ia - номер статьи (если объединить с предыдущим, например через format, можно вывести что-то вроде 1.2)
                --]]
            end
        end
    end
end
 
  • Нравится
Реакции: $Mr.R1ch$