# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"#([a-fA-F0-9]{3})([a-fA-F0-9]{3})?(?=\W?)"
test_str = ("/* Ce fichier contient les classes CSS personnalisées */\n\n"
"/* **************************************** couleurs ******************************************* */\n"
"@coldisp: #090;\n"
"@colindisp: #FA0;\n"
"@colweekend: #FA0;\n"
"@colconges: #F00;\n"
"@colreservations: #FA0;\n"
"@colhoraires: #850;\n"
"@colferie: #9CF;\n"
"@colrien: #FFF;\n\n"
"@colrupturesfond: #A8D089;\n"
"@colrupturestext: #000000;\n\n"
"@colbaronglefond: #CCEFCB;\n"
"@colbarongletext: #000000;\n\n"
"@colbaroutilfond: #DBF0CC;\n"
"@colbaroutiltext: #000000;\n\n"
"@colbartitrefond: #315E0F;\n"
"@colbartitretext: #FFFFFF;\n\n"
"@colbordures: #BBE899;\n\n"
"/* **************************** fonctions de dégradés verticaux ******************************* */\n"
".degradev (@color1, @color2) {\n"
" background-color: @color2;\n"
" background-image: -webkit-linear-gradient(top, @color1, @color2);\n"
" background-image: -moz-linear-gradient(top, @color1, @color2);\n"
" background-image: -o-linear-gradient(top, @color1, @color2);\n"
" background-image: -ms-linear-gradient(top, @color1, @color2);\n"
" background-image: linear-gradient(top, @color1, @color2);\n"
"}\n"
".degradev (@color1, @color2, @color3) {\n"
" background-color: @color2;\n"
" background-image: -webkit-linear-gradient(top, @color1, @color2, @color3);\n"
" background-image: -moz-linear-gradient(top, @color1, @color2, @color3);\n"
" background-image: -o-linear-gradient(top, @color1, @color2, @color3);\n"
" background-image: -ms-linear-gradient(top, @color1, @color2, @color3);\n"
" background-image: linear-gradient(top, @color1, @color2, @color3);\n"
"}\n"
".degradev (@color1, @color2, @color3, @color4) {\n"
" background-color: @color2;\n"
" background-image: -webkit-linear-gradient(top, @color1, @color2, @color3, @color4);\n"
" background-image: -moz-linear-gradient(top, @color1, @color2, @color3, @color4);\n"
" background-image: -o-linear-gradient(top, @color1, @color2, @color3, @color4);\n"
" background-image: -ms-linear-gradient(top, @color1, @color2, @color3, @color4);\n"
" background-image: linear-gradient(top, @color1, @color2, @color3, @color4);\n"
"}\n\n"
".degradev (@color1, @color2, @color3, @color4, @color5) {\n"
" background-color: @color2;\n"
" background-image: -webkit-linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n"
" background-image: -moz-linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n"
" background-image: -o-linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n"
" background-image: -ms-linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n"
" background-image: linear-gradient(top, @color1, @color2, @color3, @color4, @color5);\n"
"}\n\n"
".degradev (@color1, @color2, @color3, @color4, @color5, @color6) {\n"
" background-color: @color2;\n"
" background-image: -webkit-linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n"
" background-image: -moz-linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n"
" background-image: -o-linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n"
" background-image: -ms-linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n"
" background-image: linear-gradient(top, @color1, @color2, @color3, @color4, @color5, @color6);\n"
"}\n\n"
"/* *********************************** fonctions de dégradés horizontaux ********************************** */\n"
".degradeh (@color1, @color2) {\n"
" background-color: @color2;\n"
" background-image: -webkit-linear-gradient(to left, @color1, @color2);\n"
" background-image: -moz-linear-gradient(to left, @color1, @color2);\n"
" background-image: -o-linear-gradient(to left, @color1, @color2);\n"
" background-image: -ms-linear-gradient(to left, @color1, @color2);\n"
" background-image: linear-gradient(to left, @color1, @color2);\n"
"}\n"
".degradeh (@color1, @color2, @color3) {\n"
" background-color: @color2;\n"
" background-image: -webkit-linear-gradient(to left, @color1, @color2, @color3);\n"
" background-image: -moz-linear-gradient(to left, @color1, @color2, @color3);\n"
" background-image: -o-linear-gradient(to left, @color1, @color2, @color3);\n"
" background-image: -ms-linear-gradient(to left, @color1, @color2, @color3);\n"
" background-image: linear-gradient(to left, @color1, @color2, @color3);\n"
"}\n"
".degradeh (@color1, @color2, @color3, @color4) {\n"
" background-color: @color2;\n"
" background-image: -webkit-linear-gradient(to left, @color1, @color2, @color3, @color4);\n"
" background-image: -moz-linear-gradient(to left, @color1, @color2, @color3, @color4);\n"
" background-image: -o-linear-gradient(to left, @color1, @color2, @color3, @color4);\n"
" background-image: -ms-linear-gradient(to left, @color1, @color2, @color3, @color4);\n"
" background-image: linear-gradient(to left, @color1, @color2, @color3, @color4);\n"
"}\n\n"
".toolbar_icon {\n"
" background-size: 24px;\n"
"}\n\n"
"/* ****************************** valeurs par défaut ****************************** */\n\n\n"
"iframe[seamless]{\n"
" background-color: transparent;\n"
" border: 0px none transparent;\n"
" padding: 0px;\n"
"}\n\n\n"
"//.x-grid-row .x-grid-cell,\n"
".x-grid-data-row .x-grid-cell,\n"
".x-grid-group-title {\n"
" font-family: \"Segoe UI\", \"tahoma\", \"arial\", \"verdana\", sans-serif;\n"
"}\n\n"
".x-grid-row-summary .x-grid-cell-inner {\n"
" font-weight: bold !important;\n"
" font-size: 13px;\n"
"}\n\n"
".x-panel-header-text-default-framed,\n"
".x-tab button,\n"
".x-panel-header-default,\n"
".x-panel-header-text-default,\n"
".x-btn-inner,\n"
".x-fieldset-header {\n"
" font-size: 12px !important;\n"
"}\n\n"
".x-grid-with-row-lines .x-grid-cell-inner {\n"
" line-height: 21px;\n"
" white-space: normal;\n"
"}\n\n"
"//.x-grid-row .x-grid-cell {\n"
".x-grid-data-row .x-grid-cell {\n"
" font-size: 13px;\n\n"
" a {\n"
" text-decoration: none;\n"
" }\n"
"}\n\n\n"
"/* enlève le padding par défaut dans les cellules des grids*/\n"
".x-grid-cell-inner,\n"
".x-grid-group-hd {\n"
" padding: 0 !important;\n"
"}\n\n"
"/* corrige le padding des cellules de treeview */\n"
"/*.x-tree-view .x-grid-cell-inner {\n"
" padding: 3px !important;\n"
"}\n"
"*/\n"
".x-tree-view .x-grid-cell-inner-treecolumn {\n"
" padding: 3px !important;\n"
"}\n\n\n"
"/* dossier fermé */\n"
".x-tree-icon-parent {\n"
" background-image: url(\"../resources/images/folder_closed_16x16.png\");\n"
"}\n\n"
"/* dossier ouvert */\n"
".x-grid-tree-node-expanded .x-tree-icon-parent {\n"
" background-image: url(\"../resources/images/folder_16x16.png\");\n"
"}\n\n\n"
"/* corrige le padding par défaut dans les entêtes de colonne des grids*/\n"
"/* et centre les entete de colonne */\n"
".x-column-header-inner {\n"
" text-align: center !important;\n"
" padding: 3px 0px;\n"
"}\n\n"
".x-grid-group-title {\n"
" font-size: 11px;\n"
" line-height: 18px;\n"
" height: 18px;\n"
" vertical-align: middle;\n\n"
" .degradeh(#2f323f, #2e65a7, #2f323f);\n"
" background-color: #2F323F !important;\n"
" color: #FFF;\n"
"}\n\n"
".x-boundlist-list-ct ul {\n"
" padding: 0;\n"
" list-style-type: none;\n"
"}\n\n"
".x-timepicker {\n"
" .x-boundlist-item {\n"
" text-align: center;\n"
" }\n"
"}\n\n"
".x-grid-cell.vrai, .x-grid-cell.faux {\n"
" font-size: 18px;\n"
"}\n"
".x-grid-cell.vrai {\n"
" color: #060;\n"
"}\n"
".x-grid-cell.faux {\n"
" color: #900;\n"
"}\n\n\n\n"
"/* ************************************************* commun ******************************************************* */\n"
".handcursor {\n"
" cursor: pointer;\n"
"}\n\n"
".imgbackground {\n"
" width: 100%;\n"
" bottom: 0px;\n"
" left: 0px;\n"
" position: absolute;\n"
"}\n\n"
".zindex1 {\n"
" z-index: 1;\n"
"}\n\n"
".whitebg {\n"
" z-index: 1;\n"
"}\n\n"
".whitebg .x-panel-body {\n"
" background-color: rgba(255,255,255,0.5) !important;\n"
"}\n\n"
".champ-email input[type=text] {\n"
" background : #fff url(\"../resources/images/email_16x16.png\") 4px 50% no-repeat;\n"
" padding-left: 25px;\n"
" cursor: pointer;\n"
"}\n\n"
".ligne-vide {\n"
" display: none;\n"
"}\n\n"
".champ-gmaps textarea {\n"
" background: #ffffff url(\"../resources/images/localisation_16x16.png\") no-repeat 99% 8%;\n"
" padding-left: 10px;\n"
" padding-right: 25px;\n"
" cursor: pointer;\n"
"}\n\n"
"/* ************************************************* spécifique **************************************************** */\n"
"/* header */\n\n"
"#headerpanel {\n\n"
" #container_welcome {\n\n"
" font-family: 'sinkin_sans', Arial, sans-serif;\n\n"
" /* titre de l'application */\n"
" #txt_welcome {\n"
" vertical-align: bottom;\n"
" /*height: 62px;*/\n\n"
" #titre {\n"
" text-shadow: 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF, 0 0 0.4em #FFF;\n"
" font-size: 24px;\n"
" font-weight: normal;\n"
" line-height: 62px;\n"
" margin: 0px;\n\n"
" a:focus {\n"
" outline: none;\n"
" }\n\n"
" a, a:link, a:visited {\n"
" text-decoration: none;\n"
" color: #369;\n"
" padding-bottom: 2px;\n"
" }\n\n"
" a:hover {\n"
" text-decoration: none;\n"
" border-bottom: solid 2px #369;\n"
" }\n"
" }\n"
" }\n\n\n"
" #container_messagedujour-innerCt {\n"
" vertical-align: middle !important;\n\n"
" /* caroussel des messages */\n"
" #messagedujour {\n"
" margin: 0px;\n"
" text-align: left;\n\n"
" .viewport {\n"
" width: 100%;\n"
" max-width: 562px;\n"
" height: 30px;\n"
" overflow: hidden;\n"
" position: relative;\n"
" display: inline-block;\n"
" vertical-align: middle;\n\n"
" .overview {\n"
" margin: 0px;\n"
" list-style: none;\n"
" position: absolute;\n"
" left: 0\n"
" top: 0;\n\n"
" .page {\n"
" margin: 0px;\n"
" padding: 0px;\n"
" float: left;\n"
" border: none;\n"
" width: 550px;\n\n"
" p {\n"
" margin: 0px;\n"
" padding: 0px;\n"
" line-height: 30px;\n"
" }\n"
" }\n"
" }\n"
" }\n\n"
" .bullets {\n"
" /*overflow:hidden;*/\n"
" /*height: 1%;*/\n"
" list-style: none;\n"
" clear: both;\n"
" margin: 0px;\n"
" display: inline-block;\n"
" padding: 0px;\n"
" vertical-align: middle;\n\n"
" li {\n"
" float: left;\n"
" }\n\n"
" .bullet {\n"
" background-color: #fff;\n"
" text-decoration: none;\n"
" text-align: center;\n"
" padding: 0px 4px;\n"
" color: #555555;\n"
" font-size: 13px;\n"
" font-weight: bold;\n"
" display: block;\n\n"
" &.active {\n"
" color: #fff;\n"
" background-color: #555555;\n"
" }\n"
" }\n"
" }\n"
" }\n"
" }\n"
" }\n\n"
" #container_profil {\n\n"
" background-image: url(\"../resources/images/header_ident3.png\");\n"
" background-repeat: no-repeat;\n"
" background-position: right;\n"
" font-family: 'sinkin_sans', Arial, sans-serif;\n\n"
" #lbl_profil_qui {\n"
" .x-form-display-field {\n"
" color: #EEE;\n"
" font-size: 18px;\n"
" text-align: center;\n"
" font-family: 'sinkin_sans', Arial, sans-serif;\n"
" }\n\n"
" .x-form-item-body {\n"
" vertical-align: bottom;\n"
" }\n"
" }\n\n"
" #lbl_profil_connexion {\n"
" display: table-cell;\n"
" vertical-align: middle;\n"
" }\n\n"
" #login_link:link, #login_link:link, #login_link:visited {\n"
" color: #EEE;\n"
" font-size: 14px;\n"
" text-decoration: none;\n"
" }\n"
" #login_link:hover{\n"
" color: #FFF;\n"
" text-decoration: underline;\n"
" }\n"
" }\n"
"}\n\n\n"
"#grid_adh_suiviexercice .x-grid-cell-inner {\n"
" line-height: 13px;\n"
" white-space: normal;\n"
"}\n"
"#grid_adh_exercices {\n"
" .x-grid-cell-inner {\n"
" white-space: nowrap;\n"
" }\n"
"}\n\n"
"/* corrige un bug */\n"
"#menu_reservationsSemaine .x-grid-cell-inner {\n"
" white-space: nowrap;\n"
"}\n\n\n"
"#about h1 {\n"
" font-size: 20px;\n"
"}\n\n"
"dl.credits, dl.aide, dl.releasenotes {\n"
" margin-left: 20px;\n\n"
" dt {\n"
" font-weight: bold;\n"
" font-size: 16px;\n"
" margin-top: 30px;\n"
" }\n\n"
" dd {\n"
" margin-left: 25px;\n\n"
" strong {\n"
" font-weight: 700 !important;\n"
" }\n"
" }\n"
"}\n\n\n\n\n\n"
"/* PLANNING ET RESERVATIONS */\n\n"
".activite, .reunion {\n"
" &.disponible {\n"
" background-color: @coldisp;\n"
" border-left: solid 10px @coldisp;\n"
" border-right: solid 2px lighten(@coldisp, 30%);\n"
" }\n\n"
" &.indisponible {\n"
" background-color: @colindisp;\n"
" border-left: solid 10px @colindisp;\n"
" border-right: solid 2px lighten(@colindisp, 30%);\n"
" }\n\n"
" &.conges {\n"
" background-color: @colconges;\n"
" border-left: solid 10px @colconges;\n"
" border-right: solid 2px lighten(@colconges, 30%);\n"
" }\n\n"
" &.ferie {\n"
" background-color: @colferie;\n"
" border-left: solid 10px @colferie;\n"
" border-right: solid 2px lighten(@colferie, 30%);\n"
" }\n\n"
" .contenu {\n"
" background-color: rgba(255,255,255,0.90);\n"
" padding: 10px;\n"
"/* left: 10px; /* /* mettre à 0 pour mettre la bande à droite */\n"
" position: relative;\n"
" border-bottom: dotted 1px #AAA;\n\n"
" .typeactivite, .lieuactivite, .libactivite, .typereunion, .lieureunion, .libreunion, .organisateur, .grptrav, .techniciens {\n"
" margin: 5px;\n"
" padding: 0;\n"
" list-style-type: none;\n"
" }\n\n"
" .horaireconteneur {\n"
" margin: 0px 5px 5px 5px;\n"
" }\n\n"
" .complementactivite {\n"
" position: absolute;\n"
" right: 0px;\n"
" top: 0px;\n"
" width: 12px;\n"
" opacity: 0.75;\n"
" }\n\n"
" .conteneur_trajet {\n"
" border: solid 2px #CCC;\n"
" background-color: #FFF;\n"
" margin-top: 10px;\n"
" padding: 5px;\n\n"
" a img {\n"
" margin-right: 5px;\n"
" }\n\n"
" a, a:link, a:visited {\n"
" color: #16529C;\n"
" text-decoration: none;\n"
" }\n\n"
" a:hover, a:focus {\n"
" text-decoration: underline;\n"
" }\n"
" }\n"
" }\n\n"
" &:last-child .contenu {\n"
" border-bottom: none;\n"
" }\n\n"
" .horaire, .special {\n"
" font-weight: bold;\n\n"
" &.debut:after {\n"
" content: \" - \";\n"
" }\n"
" }\n\n"
" .special:after {\n"
" content: \" : \";\n"
" }\n\n"
" .organisateur a, .techniciens a {\n"
" color: #16529C;\n"
" text-decoration: none;\n\n"
" &:hover, &:focus {\n"
" text-decoration: underline;\n"
" }\n"
" }\n\n"
" ul.grptrav li, ul.techniciens li {\n"
" width: 100%;\n"
" min-height: 18px;\n\n"
" .mailtec {\n"
" margin: 0px 6px;\n"
" }\n\n"
" .alltecs {\n"
" font-weight: bolder;\n"
" }\n"
" }\n\n"
" span.organisateur {\n"
" display: block;\n\n"
" .mailtec {\n"
" margin: 0px 6px;\n"
" }\n\n"
" }\n\n"
" .lieuactivite, .libactivite {\n"
" display: block;\n"
" color: #999;\n"
" font-size: small;\n"
" }\n\n"
" ol.visites {\n"
" padding: 10px;\n"
" font-size: 11px;\n"
" margin-left: 10px;\n\n"
" li {\n"
" list-style: decimal;\n\n"
" a {\n"
" color: #16529C;\n"
" text-decoration: none;\n\n"
" &.trajet {\n"
" display: inline-block;\n"
" margin: 5px 0px 15px 36px;\n"
" }\n\n"
" &:hover, &:focus {\n"
" text-decoration: underline;\n"
" }\n"
" }\n"
" }\n\n"
" li:last-child a.trajet{\n"
" margin-bottom: 0px;\n"
" }\n"
" }\n\n"
" &:last-child {\n"
" border-bottom: none;\n"
" }\n"
"}\n\n"
"#menu_planning,\n"
"#menu_reservationsSemaine {\n\n"
" .x-grid-data-row .x-grid-cell {\n"
" border-top: 0px !important;\n"
" border-bottom: 1px solid #D2D2D2 !important;\n"
" }\n\n"
" .x-grid-rowbody:empty {\n"
" padding: 0;\n"
" }\n\n"
" .x-grid-with-row-lines .x-grid-cell {\n"
" border-top-width: 0px !important;\n"
" }\n\n"
" .x-grid-group-hd {\n"
" padding: 0;\n"
" border-top: 2px solid #99BBE8;\n"
" border-bottom: none;\n\n"
" .x-grid-group-title {\n"
" font-size: 15px;\n"
" line-height: 26px;\n"
" height: 26px;\n"
" white-space: normal;\n"
" }\n"
" }\n"
"}\n\n\n\n\n\n\n\n\n\n\n"
"/* CONGES et RESERVATIONS ANNUELLES */\n"
"#grid_conges {\n"
" .journee {\n"
" &.ferie, &.weekend, &.ouvre, &.rien {\n"
" .contenu {\n"
" line-height: 32px;\n"
" }\n"
" }\n"
" &.conge, &.ferie {\n"
" .contenu {\n"
" line-height: 16px;\n"
" }\n"
" }\n"
" }\n"
"}\n"
"#grid_reservations_annee {\n"
" .journee {\n"
" .contenu {\n"
" height: 64px;\n"
" .toutseul {\n"
" line-height: 64px;\n"
" }\n"
" }\n"
" }\n"
"}\n\n"
"#grid_conges, #grid_reservations_annee {\n\n"
" /* ruptures */\n"
" .x-grid-group-hd .x-grid-group-title {\n"
" padding: 0px 5px 0px 50px;\n"
" }\n\n"
" .x-column-header-text {\n"
" font-weight: bold;\n"
" }\n\n"
" /* cellules */\n"
" .x-grid-cell {\n"
" border-top: solid 1px #fff !important;\n"
" border-bottom: none;\n"
" background-color: #BFE5BF;\n"
" }\n\n"
" .journee {\n\n"
" &.ferie, &.weekend, &.ouvre, &.rien {\n\n"
" .contenu {\n"
" background-color: rgba(255, 255, 255, 0.75);\n"
" width: 98%;\n"
" left: 0px;\n"
" text-align: center;\n\n"
" vertical-align: middle;\n\n\n"
" a, a:link, a:visited {\n"
" text-decoration: none;\n"
" color: #3C4B83;\n"
" margin-bottom: 5px;\n"
" font-weight: bold;\n"
" }\n\n"
" a:hover {\n"
" text-decoration: underline;\n"
" }\n\n"
" p {\n"
" margin: 0;\n"
" }\n"
" }\n"
" }\n\n"
" &.rien {\n"
" background-color: @colrien;\n"
" }\n\n"
" &.weekend {\n"
" background-color: @colweekend;\n"
" }\n\n"
" &.ouvre {\n"
" background-color: @coldisp;\n"
" }\n\n"
" &.rsvt {\n"
" background-color: @colreservations;\n\n"
" .contenu {\n"
" .descjourhoraires {\n"
" color: @colhoraires;\n"
" font-weight: bold;\n"
" }\n"
" }\n"
" }\n\n"
" &.conge {\n"
" background-color: @colconges;\n"
" }\n\n"
" &.ferie {\n"
" background-color: @colferie;\n"
" }\n\n"
" &.conge, &.rsvt {\n\n"
" img {\n"
" float: left;\n"
" margin: 1px -16px 1px 1px;\n\n"
" }\n\n"
" &.matin, &.aprem {\n"
" border-left: dotted 1px #AAA;\n\n"
" .contenu {\n"
" width: 96%;\n"
" }\n"
" }\n\n"
" &.matin {\n"
" width: 49%;\n"
" float: left;\n"
" }\n\n"
" &.aprem {\n"
" width: 51%;\n"
" float: right;\n"
" }\n"
" }\n"
" }\n"
"}\n\n\n\n"
"/* Conges par secteurs */\n"
"#grid_congesSecteur {\n"
" .x-grid-cell-inner {\n"
" height: 40px;\n\n"
" .journee {\n"
" display: block;\n"
" width: 100%;\n"
" height: 100%;\n"
" border-style: dotted !important;\n"
" border-width: 1px !important;\n\n"
"/* &.ouvre {\n"
" background-color: #EEE;\n"
" }*/\n\n"
" &.ferie {\n"
" background-color: #9CF;\n"
" border-color: #00F;\n"
" }\n\n"
" &.weekend {\n"
"/* background-color: #F28282;\n"
" border-color: #000;\n"
"*/ background-color: rgba(200, 200, 200, 0.17);\n"
" border: none !important;\n"
" }\n\n"
" &.conge {\n"
" background-color: #FAA;\n"
" border-color: #F00;\n\n"
" &.jour {\n\n"
" }\n\n"
" &.matin {\n"
" width: 50%;\n"
" float: left;\n"
" /*\n"
" height: 50%;\n"
" margin-bottom: 50%;\n"
" */\n"
" background-color: #FFAA66;\n"
" }\n\n"
" &.aprem {\n"
" width: 50%;\n"
" float: right;\n"
" /*\n"
" height: 50%;\n"
" margin-top: 50%;\n"
" */\n"
" background-color: #FF7575;\n"
" }\n"
" }\n\n"
" &.travail {\n"
" background-color: #AFA;\n"
" border-color: #0F0;\n"
" }\n\n"
" &.rien {\n"
" border: none !important;\n"
" }\n\n"
" }\n\n"
" .nom_technicien {\n"
" text-align: right;\n"
" margin-right: 5px;\n\n"
" a {\n"
" text-decoration: none;\n\n"
" &:link, &:visited {\n"
" color: #3C4B83\n"
" }\n"
" }\n"
" }\n\n"
" .actions_technicien {\n"
" float: right;\n"
" padding: 5px;\n"
" }\n"
" }\n\n"
" .x-column-header {\n"
" &.aujourdhui, &.ferie, &.weekend, &.aujourdhui .x-column-header-text, &.ferie .x-column-header-text, &.weekend .x-column-header-text {\n"
" font-weight: normal;\n"
" color: #000;\n"
" }\n\n"
" &.aujourdhui {\n"
" .degradev (#F88, #F00);\n"
" }\n\n"
" &.ferie {\n"
" .degradev (#E9E9FF, #D3D4FF);\n"
" }\n\n"
" &.weekend {\n"
" .degradev (#E9E9E9, #D3D4D6);\n"
" }\n"
" }\n"
"}\n\n\n"
"/* ACCUEIL */\n"
"#grid_activite {\n"
"// .x-grid-row .x-grid-cell {\n"
" .x-grid-data-row .x-grid-cell {\n"
" vertical-align: middle;\n"
" }\n"
"}\n\n"
"/*.x-grid-row .x-grid-cell .aujourdhui {*/\n"
".x-grid-data-row .x-grid-cell.aujourdhui {\n"
" .activite, .reunion {\n"
" .contenu {\n"
" background-color: rgba(255, 255, 255, 0.85);\n"
" }\n"
" }\n"
"}\n\n"
".lbl_sem {\n"
" font-size: 24px;\n"
" font-weight: bold;\n"
"}\n\n\n"
".x-column-header {\n"
" &.aujourdhui, &.ferie, &.weekend, &.aujourdhui .x-column-header-text, &.ferie .x-column-header-text, &.weekend .x-column-header-text {\n"
" font-weight: bold;\n"
" color: #FFF;\n"
" .x-column-header-over {\n"
" color: #000;\n"
" }\n"
" }\n\n"
" &.aujourdhui {\n"
" .degradev (#F88, #F00);\n"
" }\n\n"
" &.ferie {\n"
" .degradev (#88F, #00F);\n"
" }\n\n"
" &.weekend {\n"
" .degradev (#F88, #F00);\n"
" }\n"
"}\n\n"
".action.email, .action.conges {\n"
" margin-right: 10px;\n"
" margin-top: 5px;\n"
" float: right;\n"
"}\n\n"
".x-grid-cell-inner,\n"
".x-grid-group-hd {\n"
" .x-grid-group-title .technicien, .x-grid-group-title .materiel {\n"
" display: inline-block;\n"
" width: 100%;\n\n"
" .nomprenom, .description {\n"
" display: inline-block;\n"
" padding-left: 27px;\n\n"
" img {\n"
" vertical-align: middle;\n"
" margin: 0px 2px 3px 0px;\n"
" }\n"
" }\n\n"
" .actions {\n"
" display: inline-block;\n"
" float: right;\n\n"
" .secteur, .tpstrav {\n"
" margin-right: 20px;\n"
" display: inline-block;\n"
" }\n\n"
" .tpstrav {\n"
" min-width: 50px;\n"
" }\n\n"
" .secteur {\n"
" min-width: 180px;\n"
" }\n\n"
" .code {\n"
" min-width: 40px;\n"
" display: inline-block;\n"
" }\n\n"
" .tpstrav + a {\n"
" min-width: 90px;\n"
" }\n\n"
" .tpstrav + a, .tpstrav + a {\n"
" display: inline-block;\n"
" }\n\n"
" .telephone {\n"
" &.bureau {\n"
" background-image: url(\"../resources/images/telephone_16x16.png\");\n"
" min-width: 70px;\n"
" }\n\n"
" &.portable {\n"
" background-image: url(\"../resources/images/phone_16x16.png\");\n"
" min-width: 106px;\n"
" }\n"
" background-position: 0 50%;\n"
" background-repeat: no-repeat;\n"
" padding-left: 20px;\n"
" display: inline-block;\n"
" }\n\n"
" .envoisms {\n"
" margin-right: 20px;\n\n"
" img {\n"
" vertical-align: middle;\n"
" }\n"
" }\n"
" }\n"
" }\n\n"
" > .technicien, > .materiel {\n"
" display: none;\n"
" }\n\n"
" > .email {\n"
" float: right;\n"
" margin: 5px;\n"
" }\n"
"}\n\n"
"#grid_social_contrats,\n"
"#grid_social_dashboard,\n"
"#grid_social_historique,\n"
"#grid_suivi_donnees_journalieres,\n"
"#grid_suivi_donnees_hebdomadaires,\n"
"#form_suivi_donnees_mensuelles,\n"
"#grid_suivi_synthese {\n"
" .x-grid-cell-inner { /*,\n"
" .x-grid-group-hd {*/\n"
" padding: 2px 6px 4px !important;\n"
" }\n\n"
"// .x-grid-row, .x-grid-row-summary {\n"
" .x-grid-data-row, .x-grid-row-summary {\n"
" height: 24px;\n\n"
" .x-grid-cell {\n"
" vertical-align: middle;\n"
" }\n\n"
" &.weekend {\n"
" .x-grid-cell-inner {\n"
" color: #600;\n"
" }\n"
" }\n"
" }\n\n"
" .x-grid-row-editor {\n"
" height: 29px !important;\n\n"
" .x-panel-body {\n"
" height: 29px !important;\n"
" display: table-cell;\n"
" vertical-align: middle;\n\n"
" .x-form-text,\n"
" .x-form-display-field {\n"
" text-align: center;\n"
" font-size: 13px;\n"
" }\n"
" }\n\n"
" .x-grid-row-editor-buttons {\n"
" top: 28px !important;\n"
" }\n"
" }\n\n"
" #txt_suivi_commentaire .x-form-item-label {\n"
" margin-bottom: 5px;\n"
" }\n\n"
" #lbl_suivi_erreur-inputEl {\n"
" color: #C00;\n"
" font-weight: bold;\n"
" }\n"
"}\n\n"
"// annule le padding pour les groupes et remplace par un padding pour le texte des groupes\n"
"#grid_social_contrats {\n"
" .x-grid-group-hd {\n"
" padding: 0px !important;\n\n"
" .x-grid-group-title {\n"
" padding: 2px 6px 4px !important;\n"
" }\n"
" }\n"
"}\n\n"
"#grid_social_dashboard {\n"
" .x-grid-group-hd {\n"
" padding-left: 8px !important;\n"
" background-color: #2F323F !important;\n"
" .degradeh(#2f323f, #2e65a7, #2f323f);\n\n"
" .x-grid-group-title {\n"
" height: 28px;\n"
" line-height: 28px;\n"
" }\n"
" }\n"
"}\n\n\n"
"li img.suivi {\n"
" float: right;\n"
" margin-top: 2px;\n"
"}\n\n"
"table.x-field {\n"
" input[type=text] {\n"
" background-repeat: no-repeat;\n"
" background-position: right center;\n"
" background-origin: content-box;\n"
" padding-right: 2px;\n"
" }\n\n"
" &.A {\n"
" input[type=text] {\n"
" background-image: url(\"../resources/images/etat_A.png\");\n"
" }\n"
" }\n"
" &.F {\n"
" input[type=text] {\n"
" background-image: url(\"../resources/images/etat_F.png\");\n"
" }\n"
" }\n"
" &.N {\n"
" input[type=text] {\n"
" background-image: url(\"../resources/images/etat_N.png\");\n"
" }\n"
" }\n"
" &.P {\n"
" input[type=text] {\n"
" background-image: url(\"../resources/images/etat_P.png\");\n"
" }\n"
" }\n"
" &.R {\n"
" input[type=text] {\n"
" background-image: url(\"../resources/images/etat_R.png\");\n"
" }\n"
" }\n"
" &.V {\n"
" input[type=text] {\n"
" background-image: url(\"../resources/images/etat_V.png\");\n"
" }\n"
" }\n"
" &.X {\n"
" input[type=text] {\n"
" background-image: url(\"../resources/images/etat_X.png\");\n"
" }\n"
" }\n"
"}\n\n\n\n"
"#menu_adherent {\n\n\n"
" .x-grid-group-title {\n"
" padding: 0px 10px;\n"
" }\n\n\n\n"
" //mot de passe\n"
" #grid_adh_connexionsinternet {\n"
" .x-grid-cell-headerId-col_adh_CIN_PASSE,\n"
" .x-grid-cell-headerId-col_adh_CIN_ID {\n"
" .x-grid-cell-inner {\n"
" font-family: \"Courier New\", Courier, monospace !important;\n"
" text-align: center !important;\n"
" }\n"
" }\n\n"
" .x-grid-cell-inner {\n"
" line-height: 18px;\n"
" white-space: normal;\n"
" }\n"
" }\n\n\n\n\n"
" #grid_techniciens .x-grid-cell-inner {\n"
" padding: 2px !important;\n"
" }\n\n"
" /*\n"
" #img_adh_facturation_etat {\n"
" margin: 5px 5px 5px 20px;\n"
" }\n"
" */\n\n"
" /*\n"
" #fieldset_adh_facturation td {\n"
" vertical-align: middle;\n"
" }\n"
" */\n\n"
" #grid_adh_exercices {\n"
" .x-grid-cell {\n"
" vertical-align: middle;\n\n"
" .x-grid-cell-inner {\n"
" height: 24px;\n"
" line-height: 24px;\n"
" padding: 2px !important;\n\n"
" .jauge {\n"
" /*margin-top: 1px;*/\n\n\n"
" .green_progress_bar .x-progress-bar {\n"
" .degradev (#9AC795, #79BF71 50%, #69BA5F 51%, #58B54E);\n"
" background-color: #68BA5F;\n"
" border-right-color: #5BA852;\n"
" border-top-color: #AAC7A7;\n"
" }\n\n\n"
" }\n"
" }\n"
" }\n"
" }\n\n"
" /*\n"
" #form_adh_etatcivil {\n"
" #txt_adh_etatcivil_designation {\n"
" .x-form-display-field {\n"
" font-weight: bold;\n"
" font-size: 18px;\n"
" padding: 0px;\n"
" }\n"
" }\n"
" }\n"
" */\n\n"
" #grid_adh_techniciens, #form_adh_etatcivil, #grid_adh_associes, #grid_adh_interventions {\n"
" .champ_email, .rien {\n"
" text-decoration: none;\n\n"
" /*float: right;*/\n"
" img {\n"
" display: inline-block;\n"
" }\n"
" }\n\n"
" .champ_email_text .x-form-display-field {\n"
" /*padding: 0px;*/\n"
" margin: 0px;\n\n"
" img {\n"
" margin-left: 10px;\n"
" position: relative;\n"
" bottom: -3px;\n"
" }\n"
" }\n"
" }\n\n"
" #grid_adh_interventions {\n"
" .x-grid-cell-inner {\n"
" white-space: normal !important;\n"
" }\n"
" }\n"
"}\n\n"
".aucuneactivite .x-grid-rowbody {\n"
" color: #AAA;\n"
" padding: 0.75em;\n"
" text-align: center;\n"
"}\n"
".activite.aucuneactivite, .reunion.aucuneactivite {\n"
" color: #AAA;\n"
" text-align: center;\n"
" font: normal normal 400 11px/13px Tahoma;\n"
"}\n\n\n\n"
".x-grid-group-title {\n"
" .headertec, .headerreunion {\n"
" padding: 0px 5px;\n"
" height: 26px;\n\n"
" &.ferme, &.ouvert {\n"
" background-position: 4px 50%;\n"
" background-repeat: no-repeat;\n"
" }\n\n"
" background-image: none;\n\n"
" &.ferme {\n"
" background-image: url(\"../resources/images/expand_16x16.png\");\n"
" }\n\n"
" &.ouvert {\n"
" background-image: url(\"../resources/images/collapse_16x16.png\");\n"
" }\n"
" }\n"
"}\n\n\n"
"#grandlivre_grid {\n"
"// .x-grid-row .x-grid-cell-inner {\n"
" .x-grid-data-row .x-grid-cell-inner {\n"
" font-size: 13px;\n"
" padding: 5px !important;\n"
" }\n\n"
" .x-grid-group-title {\n"
" font-size: 13px;\n"
" padding: 15px 0px 3px 20px !important;\n"
" line-height: normal;\n"
" height: auto;\n"
" border-top: 2px solid #99BBE8;\n"
" background-color: #E5FFCC !important;\n"
" color: #3764A0;\n"
" background-image: none;\n"
" }\n\n"
" .cgo_signe {\n"
" float: left;\n"
" margin-left: 5px;\n"
" }\n\n"
" .cgo_debit {\n"
" .cgo_currency {\n"
" margin-right: 30px;\n"
" color: #600;\n"
" }\n"
" }\n\n"
" .cgo_credit {\n"
" .cgo_currency {\n"
" margin-right: 5px;\n"
" color: #040;\n"
" }\n"
" }\n\n"
" .x-grid-row.gras .x-grid-cell-inner,\n"
" .x-grid-data-row.gras .x-grid-cell-inner {\n"
" font-size: 13px;\n"
" font-weight: 700 !important;\n"
" }\n"
"}\n\n"
"#menu_planning, #menu_reservationsSemaine {\n"
" .x-grid-group-hd:hover {\n"
" cursor: pointer;\n"
" }\n"
"}\n\n"
"#menupanel .x-grid-cell-inner {\n"
" font-size: 13px;\n"
" line-height: 13px;\n\n"
" .x-tree-node-text {\n"
" font-size: 13px;\n"
" line-height: 14px;\n"
" }\n"
"}\n\n"
".modifiable:hover {\n"
" background-image: url( \"../resources/images/pencil_16x16.png\" );\n"
" background-repeat: no-repeat;\n"
" background-position: 1% center;\n"
" padding-left: 24px;\n"
"}\n\n"
".marge_droite_5px {\n"
" margin-right: 5px;\n"
"}\n\n"
"#lbl_suivi_recap, #lbl_suivi_commande {\n\n"
" h3 {\n"
" margin: 0px;\n"
" vertical-align: middle;\n"
" line-height: 25px;\n\n"
" &.big {\n"
" line-height: 50px;\n"
" }\n"
" }\n\n"
" span.salarie, span.mois, span.refcom, span.statutcom {\n"
" color: #900;\n"
" }\n"
"}\n\n"
"/* popup qui apparait dans le planning lors du survol d'un technicien */\n"
"div.pop-up {\n"
" display: none;\n"
" position: fixed;\n"
" padding: 0px 10px 10px 10px;\n"
" background: #eeeeee;\n"
" opacity: 1.0;\n"
" color: #000000;\n"
" border: 1px solid #1a1a1a;\n"
" z-index: 1000;\n\n"
" .entete, .contenant {\n"
" margin: 0px;\n"
" }\n\n"
" .entete {\n"
" .fonctions {\n"
" margin: 0px;\n"
" padding: 0px;\n"
" font-size: 11px;\n"
" list-style-type: none;\n"
" text-align: center\n"
" }\n"
" }\n\n"
" .contenu {\n\n"
" /*background-color: salmon;*/\n\n"
" .photo {\n"
" display: block; /* pour enlever l'espace en dessous de l'image */\n"
" }\n"
" }\n"
"}\n\n"
".x-selectable, .x-selectable * {\n"
" -moz-user-select: text!important;\n"
" -khtml-user-select: text!important;\n"
"}\n\n\n\n"
"#grid_congesStats {\n"
" .premiereannee {\n"
" &.important {\n"
" font-weight: bold;\n"
" }\n"
" }\n\n"
" .anneessuivantes {\n"
" /*display: none;*/\n"
" .subitem {\n"
" &.n-0 {\n"
" background-color: rgba(255, 255, 255, 0.3);\n"
" }\n\n"
" &.n-1 {\n"
" background-color: rgba(255, 255, 255, 0.4);\n"
" }\n\n"
" &.n-2 {\n"
" background-color: rgba(255, 255, 255, 0.5);\n"
" }\n\n"
" &.n-3 {\n"
" background-color: rgba(255, 255, 255, 0.6);\n"
" }\n\n"
" &.n-4 {\n"
" background-color: rgba(255, 255, 255, 0.7);\n"
" }\n\n"
" &.n-5 {\n"
" background-color: rgba(255, 255, 255, 0.8);\n"
" }\n\n"
" &.n-6 {\n"
" background-color: rgba(255, 255, 255, 0.9);\n"
" }\n"
" }\n\n"
" }\n\n"
" .depart {\n"
" background-color: rgba(255, 0, 0, 0.2);\n"
" }\n\n"
" .intermediaire {\n"
" background-color: rgba(255, 255, 0, 0.2);\n"
" }\n\n"
" .arrivee {\n"
" background-color: rgba(0, 255, 0, 0.2);\n"
" }\n\n"
" .x-docked-summary {\n"
" .x-grid-cell-inner {\n"
" height: 32px;\n"
" line-height: 32px;\n"
" }\n"
" }\n"
"}\n\n\n\n"
".listright {\n"
" float: right;\n"
" font-family: \"Courier New\", \"Courier\", monospace;\n"
" font-weight: 700;\n"
" color: #888;\n"
"}\n\n"
"img.listright {\n"
" margin-left: 10px;\n"
"}\n\n\n"
".listeadhitem {\n"
" display: inline-block;\n"
" width: 320px;\n"
"}\n\n\n\n\n"
"/* compatibilité avec Selectize */\n"
"#grid_techniciens {\n"
" .x-docked {\n"
" z-index: auto;\n"
" }\n"
"}\n"
"#toolbar_techniciens {\n"
" &.x-docked {\n"
" z-index: auto;\n"
" }\n\n"
" &.x-box-layout-ct {\n"
" overflow: visible;\n"
" }\n\n"
" #toolbar_techniciens-innerCt {\n"
" &.x-box-inner {\n"
" overflow: visible;\n"
" }\n"
" }\n"
"}\n"
".selectize-control.cgo-native-text-input .selectize-dropdown {\n"
" .nomprenom, .email {\n"
" font-size: 12px;\n"
" opacity: 0.5;\n"
" float: right;\n"
" }\n\n"
" .nomprenom {\n"
" width: 150px;\n"
" }\n\n"
" .email {\n"
" width: 160px;\n"
" }\n"
"}\n\n\n"
".negatif {\n"
" color: #F00;\n"
" font-weight: bold;\n"
"}\n\n"
"pre.insee {\n"
" margin: 0px 0px 0px 10px;\n"
" font-size: 0.85em;\n"
" color: #666;\n"
" .degradeh( rgba(255,255,255,0) 0%, #E6E6E6 50%, rgba(255,255,255,0) 100% );\n"
"}\n\n"
"pre.identifiant {\n"
" margin: 0px;\n"
"}\n\n"
"span.invalide {\n"
" color: red;\n"
"}\n\n"
"img.centrelignenormale {\n"
" position: relative;\n"
" top: 2px;\n"
"}\n")
matches = re.finditer(regex, test_str)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html