Sziasztok!
A következő problémám van: adott egy rakás (60 db) rtf formátumú template (1-2 oldalas doksik), amikben van több-kevesebb választási lehetőség, szöveges formában - így, szögletes zárójelekkel:
[ha A eset, akkor:
szöveg szöveg szöveg szöveg]
vagy
[ha B eset, akkor:
A opció
B opció
C opció]
Ezek egy webes felületről nyithatók meg - az rtf formátum azért fontos, mert a program bizonyos adatokat automatikusan beilleszt a doksikba amikor a felhasználó rákattint.
Namármost, a főnökünk kitalálta, hogy készítsünk egy "intelligensebb" megoldást, amiből az lett, hogy a felhasználó a kattintáskor kap egy új ablakot, ahol kiválaszthatja, hogy pl. A vagy B eset, és a megnyíló rtf-ben már csak a szükséges dolgok maradnak. A fejlesztőnk ezt úgy oldotta meg, hogy egyéni markupokat tett a szövegbe, pl:
<A_eset>szöveg szöveg szöveg szöveg</A_eset>
vagy
<B_eset_A_opc>A opció</B_eset_A_opc><B_eset_B_opc>B opció</B_eset_B_opc><B_eset_C_opc>C opció</B_eset_C_opc>
Ez nem is lenne rossz megoldás, DE... időközben bizonyos doksik változtak, és a bevezetés után is biztosan számíthatunk még hasonló változásokra... Nekem pedig az lenne most a feladatom, hogy a megváltozott (és jelenleg "éles") doksikat összefésüljem az "intelligens" változatokkal. Tehát pl. ezt:
[ha A eset, akkor:
egy kicsit más szöveg szöveg]
...ezzel:
<A_eset>szöveg szöveg szöveg szöveg</A_eset>
és ezt:
[ha B eset, akkor:
A oppcciió
B változat
C opció
D változat]
...ezzel:
<B_eset_A_opc>A opció</B_eset_A_opc><B_eset_B_opc>B opció</B_eset_B_opc><B_eset_C_opc>C opció</B_eset_C_opc>
[update] A szövegben vannak még más jelölések is, ilyen formában: [[ValtozoNev]] - ezeket meg kell tartani, ezek helyére kerülnek a már fent említett egyéb adatok.
A fentiekből adódóan szeretném valamilyen egyértelmű formában kimutatni a különbségeket, és mindezt nem szeretném kézzel csinálni ;-)
Ja, a környezet windows 7, de ha egyszerűbb linuxon (és gondolom az), akkor hazaviszem és otthon lefuttatom az összehasonlítást.
Minden ötletet szívesen fogadok! Köszi!
- 5447 megtekintés
Hozzászólások
Emlékeim szerint az rtf formátum viszonylag olvasható markup szintaxist használ, tehát szöveges diff-elés viszonylag használható. Ilyet próbáltál? pl. meld (http://meldmerge.org/) viszonylag jó összehasonlítást adhat két verzió között.
- A hozzászóláshoz be kell jelentkezni
Köszi a tippet, kipróbáltam és jónak tűnik. De nálam sajnos valami más kavarás is van, mert most látom, hogy az egyik szettben a doksik kb. 150KB méretűek, a másikban meg 1200KB, pedig megnyitva ugyanaz mindkettő, leszámítva a fent vázolt dolgokat. Nyilván valami verziókülönbség és/vagy metaadat katyvasz. Úgyhogy egyelőre marad a copy-paste egy text fájlba, aztán majd azokat hasonlítgatom össze... :-(
- A hozzászóláshoz be kell jelentkezni
Debian Wheezy-ben van unrtf csomag, ami a leírása alapján képes rtf-ből txt-t varázsolni. (copy-paste helyett)
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
- A hozzászóláshoz be kell jelentkezni
Hozzátenném még az xml-coreutils csomagot, hátha az is jó lesz valamire.
- A hozzászóláshoz be kell jelentkezni
????????
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
- A hozzászóláshoz be kell jelentkezni
Az egyik garnitúra jelölés nekem XML-szerűnek tűnik. Igaz ugyan, hogy RTF-be van ágyazva, de az általad javasolt módszerrel txt-vé konvertálva már lehet benne keresgélni mondjuk az xml-greppel. Amúgy ennél konkrétabb javaslatom nekem sincs. Valahogy azt érzem, hogy vannak ezek az RTF-ek, meg van hozzájuk egy keretrendszer, amit nem a kérdező írt. Ennek megfelelően ha automatikusan akarja módosítani a sablonokat, akkor egy az eredeti rendszerrel kb. egyenértékű másikat kell összehoznia, ami nekem kissé túllövésnek tűnik.
- A hozzászóláshoz be kell jelentkezni
Bocs, azt hittem egy "finom" célzás az ágyúval verébre esetre. :))
update: többször írtam, hogy nagyon rossz a szemem, nem nagyon megy a folyamatos olvasás, most is ez történt. Az összefésülés már kimaradt nálam. Csak addig jutottam, hogy a különbségeket kell megkeresnie.
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
- A hozzászóláshoz be kell jelentkezni
Ha már ágyú meg veréb...
Az az alapvető gond ezzel az egésszel, hogy a programozó, aki a keretrendszert csinálta, valószínű percek alatt meg tudná írni ezt az összefésülést vagy akármit, hiszen neki biztosan van egy komplett eszközkészlete a sablonok kezeléséhez. A kérdező meg érzésem szerint napokig elszórakozik majd vele.
- A hozzászóláshoz be kell jelentkezni
Hát az valószínű.
Csak tapasztalataim szerint ilyen feladványok akkor szoktak előjönni, ha a fejlesztő valamiért nem elérhető (a valami lehet fizikai vagy jogi akadály :) )
Ilyenkor nem marad más, mint a szartúrás, mert az élet nem állhat meg.
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
- A hozzászóláshoz be kell jelentkezni
Az a baj, hogy nincs is igazán keretrendszer, inkább csak gányolás... és való igaz, nekem kell a végén ellapátolni a szart. Ehhh...
- A hozzászóláshoz be kell jelentkezni
A metaadatok jelentős részét az alábbi Lua scripttel szoktam eltávolítani:
function clean(name)
local h
local rtf
local o
h = assert(io.open(name))
rtf = h:read("*a")
h:close()
rtf = rtf:gsub("{\\%*\\latentstyles.-}", "")
rtf = rtf:gsub("{\\%*\\datastore.-}", "")
rtf = rtf:gsub("{\\%*\\themedata.-}", "")
rtf = rtf:gsub("{\\%*\\colorschememapping.-}", "")
rtf = rtf:gsub("{\\pict\\[a-z0-9\\\r\n]-\\wmetafile.-{\\%*\\blipuid.-}.-}", "")
rtf = rtf:gsub("{\\nonshppict.-}", "")
o = assert(io.open(name:gsub("%.rtf$", "-clean.rtf"), "w"))
o:write(rtf)
o:close()
end
for _, name in ipairs(arg) do
clean(name)
end
- A hozzászóláshoz be kell jelentkezni
Köszi a tippeket, a hétvégén megnézem mittudok belőle csinálni.
- A hozzászóláshoz be kell jelentkezni