Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mär 28, 2024 09:11

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: CMake Regex
BeitragVerfasst: Di Feb 13, 2018 20:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich komme einfach nicht weiter mit folgendem Problem.
Der Regex Befehl
Code:
  1. #\\[\\[.rst([^]]*)|]([^]]*)]]
Tut fast seinen Dienst ausser dass er sich selbst auch erkennt :\
Folgende CMake file parsed CMake files und extrahiert die #.rst und #[[.rst Blöcke aber leider auch in dieser File den Regex befehl selber und einigen Müll drum rum.
Hat wer ne Idee, wie ich es hin bekomme, dass dieser Fall auch vom Regex ausgeschlossen werden kann ?
Ich bin nicht so Regex fest und einige Features kann die CMake Variante auch garnicht.
Code:
  1. #[[.rst CMake documentation
  2. ===================
  3. This file provides functions to generate documentation of CMake files.
  4. ]]
  5. include(${CMAKE_ROOT}/Modules/CMakeParseArguments.cmake)
  6.  
  7. #[[.rst .. function:: rcf_generate_doc([INCLUDES EXCLUDES])
  8.   Generates a rst files of each passed cmake file.
  9.   :param INCLUDES: A list of regex values to capture the cmake files.
  10.   :param EXCLUDES: A list of regex values to capture the cmake files which should be ignored.
  11. ]]
  12. function(rcf_generate_doc )
  13.     cmake_parse_arguments(PARSE_CMAKE_DOCUMENTATION "" "" "INCLUDES;EXCLUDES" ${ARGN} )
  14.     # INCLUDES cmake file to the list files
  15.     if(NOT DEFINED PARSE_CMAKE_DOCUMENTATION_INCLUDES)
  16.         set(PARSE_CMAKE_DOCUMENTATION_INCLUDES "${CMAKE_SOURCE_DIR}/*.cmake") # all *.cmake* by default
  17.     endif()
  18.     set(cmake_files_list)
  19.     foreach(includeFilePathPattern ${PARSE_CMAKE_DOCUMENTATION_INCLUDES})
  20.         file(GLOB_RECURSE cmake_files "${includeFilePathPattern}")
  21.         list(APPEND cmake_files_list ${cmake_files})
  22.     endforeach()
  23.  
  24.     # EXCLUDES cmake file to the list files
  25.     foreach(excludeFilePathPattern ${PARSE_CMAKE_DOCUMENTATION_EXCLUDES})
  26.         file(GLOB_RECURSE cmake_files_exclude "${excludeFilePathPattern}")
  27.         list(REMOVE_ITEM cmake_files_list ${cmake_files_exclude})
  28.     endforeach()
  29.  
  30.     # Process for each file of the list
  31.     foreach(cmake_file ${cmake_files_list})
  32.         file(READ ${cmake_file} cmake_file_content)
  33.         message(STATUS "Generate cmake doc for : ${cmake_file}")
  34.         file(WRITE "${cmake_file}.rst" "")
  35.         string(REGEX MATCHALL "#\\[\\[.rst([^]]*)|]([^]]*)]]" docSection ${cmake_file_content})
  36.         list(LENGTH docSection len)
  37.         foreach(entry ${docSection})
  38.         message("=>${entry}")
  39.             string(REGEX REPLACE "#\\[\\[.rst ([^]]*)]]" "\\1\n" block ${entry})
  40.             file(APPEND "${cmake_file}.rst" "${block}")
  41.         endforeach()
  42.         string(REGEX MATCHALL "^[ ]*#.rst[^\n]*(\n#[^\n]*)*" docSection ${cmake_file_content})
  43.         foreach(entry ${docSection})
  44.             string(REGEX REPLACE "#.rst " "" block ${entry})
  45.             string(REGEX REPLACE "\n#" "\n" block ${block})
  46.             file(APPEND "${cmake_file}.rst" "${block}\n")
  47.         endforeach()
  48.         set(cmake_file_content "")
  49.     endforeach()

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: CMake Regex
BeitragVerfasst: Mi Feb 14, 2018 16:26 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
exkludier einfach das " beim matching. also [^"] davor oder so aehnlich.

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: CMake Regex
BeitragVerfasst: Mi Feb 14, 2018 16:46 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
[^"] hat zwar nicht am Anfang oder Ende geholfen aber wenn ich verlange, dass am Ende eines Blockes ein Umbruch, tab oder space kommt [\n\t ], dann geht das :)
Danke, da hab ich echt schon ne weile auf dem Schlauch gestanden :\

Nun kann ich auch die CMake file, die die die Doku generiert dokumentieren xD

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: CMake Regex
BeitragVerfasst: Mi Feb 14, 2018 17:39 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Ja, jetzt wo ich drueber nachdenke war es inkomplett, es fehlte iwie ein punkt vmtl. also " .[^"] ". deine methode ist zwar noch mehr ghetto, aber gut, wenns geht...

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: CMake Regex
BeitragVerfasst: Fr Mär 02, 2018 11:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Hier sind die Früchte der harten Arbeit :)
https://codefeed-org.github.io/RadonCMakeFramework/
Die Doku wird aus den CMake files, mit Sphynx generiert.
Ich hab auch TravisCI dazu bekommen, die Doku automatisch zu generieren, wenn ich Änderungen im Repo mache.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 21 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.025s | 17 Queries | GZIP : On ]