mirror of
https://github.com/LucasVbr/LucasVbr.git
synced 2026-05-13 17:11:52 +00:00
feat(shields): Use simpleicons to get icon.
This commit is contained in:
Generated
+26
-16
@@ -4,20 +4,15 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="b25cc8d3-396f-4036-b751-5d061242b2fc" name="Changes" comment="Use only Python">
|
<list default="true" id="b25cc8d3-396f-4036-b751-5d061242b2fc" name="Changes" comment="Add Builder for shields">
|
||||||
<change afterPath="$PROJECT_DIR$/src/shield/shield_builder.py" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/shield/skill_shield.py" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/src/shield/social_shield.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/assets/banner.svg" beforeDir="false" afterPath="$PROJECT_DIR$/assets/banner.svg" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/requirements" beforeDir="false" afterPath="$PROJECT_DIR$/requirements" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/config.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/config.yaml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/config.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/config.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/model/skill.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/model/skill.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/model/skill.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/model/skill.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/model/skill_list.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/model/skill_list.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/model/social.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/model/social.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/model/social.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/model/social.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/model/social_list.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/model/social_list.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/shield/shield_builder.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/shield/shield_builder.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/template.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/template.py" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/template.md" beforeDir="false" afterPath="$PROJECT_DIR$/template.md" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -66,6 +61,8 @@
|
|||||||
"Python.main.executor": "Run",
|
"Python.main.executor": "Run",
|
||||||
"Python.shield_builder.executor": "Run",
|
"Python.shield_builder.executor": "Run",
|
||||||
"Python.skill.executor": "Run",
|
"Python.skill.executor": "Run",
|
||||||
|
"Python.skill_shield.executor": "Run",
|
||||||
|
"Python.skill_shield_builder.executor": "Run",
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"WebServerToolWindowFactoryState": "false",
|
"WebServerToolWindowFactoryState": "false",
|
||||||
@@ -73,7 +70,7 @@
|
|||||||
"javascript.nodejs.core.library.configured.version": "20.6.1",
|
"javascript.nodejs.core.library.configured.version": "20.6.1",
|
||||||
"javascript.nodejs.core.library.typings.version": "20.6.5",
|
"javascript.nodejs.core.library.typings.version": "20.6.5",
|
||||||
"last_directory_selection": "/Users/lucas/Documents/GitHub/LucasVbr/model",
|
"last_directory_selection": "/Users/lucas/Documents/GitHub/LucasVbr/model",
|
||||||
"last_opened_file_path": "/Users/lucas/Documents/GitHub/LucasVbr/models",
|
"last_opened_file_path": "/Users/lucas/Documents/GitHub/LucasVbr/src/shield",
|
||||||
"node.js.detected.package.eslint": "true",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.detected.package.tslint": "true",
|
"node.js.detected.package.tslint": "true",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
@@ -86,6 +83,7 @@
|
|||||||
}]]></component>
|
}]]></component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="CopyFile.RECENT_KEYS">
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
|
<recent name="$PROJECT_DIR$/src/shield" />
|
||||||
<recent name="$PROJECT_DIR$/models" />
|
<recent name="$PROJECT_DIR$/models" />
|
||||||
<recent name="$PROJECT_DIR$/src" />
|
<recent name="$PROJECT_DIR$/src" />
|
||||||
<recent name="$PROJECT_DIR$/components" />
|
<recent name="$PROJECT_DIR$/components" />
|
||||||
@@ -193,7 +191,8 @@
|
|||||||
<workItem from="1691244360881" duration="1235000" />
|
<workItem from="1691244360881" duration="1235000" />
|
||||||
<workItem from="1703610497268" duration="12323000" />
|
<workItem from="1703610497268" duration="12323000" />
|
||||||
<workItem from="1704274694444" duration="8000" />
|
<workItem from="1704274694444" duration="8000" />
|
||||||
<workItem from="1704364154441" duration="11806000" />
|
<workItem from="1704364154441" duration="13259000" />
|
||||||
|
<workItem from="1704806823609" duration="2836000" />
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00001" summary="Add OpenClassRooms link">
|
<task id="LOCAL-00001" summary="Add OpenClassRooms link">
|
||||||
<created>1660658552230</created>
|
<created>1660658552230</created>
|
||||||
@@ -245,7 +244,15 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1703624982444</updated>
|
<updated>1703624982444</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="8" />
|
<task id="LOCAL-00008" summary="Add Builder for shields">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1704379399992</created>
|
||||||
|
<option name="number" value="00008" />
|
||||||
|
<option name="presentableId" value="LOCAL-00008" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1704379399992</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="9" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
@@ -269,16 +276,19 @@
|
|||||||
<MESSAGE value="Add package.json and typescript configuration files" />
|
<MESSAGE value="Add package.json and typescript configuration files" />
|
||||||
<MESSAGE value="Add ts-node and some skills" />
|
<MESSAGE value="Add ts-node and some skills" />
|
||||||
<MESSAGE value="Use only Python" />
|
<MESSAGE value="Use only Python" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="Use only Python" />
|
<MESSAGE value="Add Builder for shields" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="Add Builder for shields" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XSLT-Support.FileAssociations.UIState">
|
<component name="XSLT-Support.FileAssociations.UIState">
|
||||||
<expand />
|
<expand />
|
||||||
<select />
|
<select />
|
||||||
</component>
|
</component>
|
||||||
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
||||||
<SUITE FILE_PATH="coverage/LucasVbr$skill.coverage" NAME="skill Coverage Results" MODIFIED="1704375618832" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/src/model" />
|
<SUITE FILE_PATH="coverage/LucasVbr$skill.coverage" NAME="skill Coverage Results" MODIFIED="1704808529789" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/src/model" />
|
||||||
<SUITE FILE_PATH="coverage/LucasVbr$download_skill_badges.coverage" NAME="download_skill_badges Coverage Results" MODIFIED="1704375392377" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/src" />
|
<SUITE FILE_PATH="coverage/LucasVbr$download_skill_badges.coverage" NAME="download_skill_badges Coverage Results" MODIFIED="1704375392377" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/src" />
|
||||||
<SUITE FILE_PATH="coverage/LucasVbr$shield_builder.coverage" NAME="shield_builder Coverage Results" MODIFIED="1704374403309" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/src/shield" />
|
<SUITE FILE_PATH="coverage/LucasVbr$shield_builder.coverage" NAME="shield_builder Coverage Results" MODIFIED="1704374403309" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/src/shield" />
|
||||||
<SUITE FILE_PATH="coverage/LucasVbr$main.coverage" NAME="main Coverage Results" MODIFIED="1704379050479" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
<SUITE FILE_PATH="coverage/LucasVbr$skill_shield_builder.coverage" NAME="skill_shield_builder Coverage Results" MODIFIED="1704808074648" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/src/shield" />
|
||||||
|
<SUITE FILE_PATH="coverage/LucasVbr$main.coverage" NAME="main Coverage Results" MODIFIED="1704809040131" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
||||||
|
<SUITE FILE_PATH="coverage/LucasVbr$skill_shield.coverage" NAME="skill_shield Coverage Results" MODIFIED="1704808482386" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/src/shield" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -12,41 +12,41 @@ I'm a passionate developer from 🇫🇷 **Pau, France**.
|
|||||||
|
|
||||||
## 🔗 Social Links
|
## 🔗 Social Links
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
## 🛠 Skills
|
## 🛠 Skills
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
pyyaml
|
pyyaml
|
||||||
json
|
json
|
||||||
requests
|
requests
|
||||||
|
simpleicons
|
||||||
+2
-7
@@ -1,4 +1,4 @@
|
|||||||
from src.shield.shield_builder import ShieldBuilder
|
from src.shield.skill_shield import SkillShield
|
||||||
|
|
||||||
|
|
||||||
class Skill:
|
class Skill:
|
||||||
@@ -7,12 +7,7 @@ class Skill:
|
|||||||
|
|
||||||
def __init__(self, name: str):
|
def __init__(self, name: str):
|
||||||
self.alt = name
|
self.alt = name
|
||||||
self.src = (
|
self.src = SkillShield(name).__str__()
|
||||||
ShieldBuilder()
|
|
||||||
.set_message(name)
|
|
||||||
.set_logo(name)
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return f""
|
return f""
|
||||||
|
|||||||
+2
-9
@@ -1,4 +1,4 @@
|
|||||||
from src.shield.shield_builder import ShieldBuilder
|
from src.shield.social_shield import SocialShield
|
||||||
|
|
||||||
|
|
||||||
class Social:
|
class Social:
|
||||||
@@ -7,14 +7,7 @@ class Social:
|
|||||||
|
|
||||||
def __init__(self, name: str, url: str):
|
def __init__(self, name: str, url: str):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.img = (
|
self.img = SocialShield(name, url).__str__()
|
||||||
ShieldBuilder()
|
|
||||||
.set_message(name)
|
|
||||||
.set_logo(name)
|
|
||||||
.set_link(url)
|
|
||||||
.set_style("for-the-badge")
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return f""
|
return f""
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from urllib.parse import urlunsplit, urlencode
|
from urllib.parse import urlunsplit, urlencode
|
||||||
|
from simpleicons.all import icons
|
||||||
|
|
||||||
class ShieldBuilder:
|
class ShieldBuilder:
|
||||||
BASE_URL = "https://img.shields.io/static/v1"
|
BASE_URL = "https://img.shields.io/static/v1"
|
||||||
@@ -36,7 +36,7 @@ class ShieldBuilder:
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
def set_logo(self, logo: str):
|
def set_logo(self, logo: str):
|
||||||
self.logo = logo
|
self.logo = icons.get(logo).slug if logo in icons else None
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def set_logo_color(self, logo_color: str):
|
def set_logo_color(self, logo_color: str):
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
from simpleicons.all import icons
|
||||||
|
|
||||||
|
from src.shield.shield_builder import ShieldBuilder
|
||||||
|
|
||||||
|
|
||||||
|
class SkillShield:
|
||||||
|
|
||||||
|
def __init__(self, name: str = None):
|
||||||
|
self.builder = ShieldBuilder()
|
||||||
|
self.skill = self.set_skill(name) if name is not None else None
|
||||||
|
|
||||||
|
def get_skill(self):
|
||||||
|
return self.skill
|
||||||
|
|
||||||
|
def set_skill(self, name: str):
|
||||||
|
self.skill = icons.get(name)
|
||||||
|
|
||||||
|
if self.skill is not None:
|
||||||
|
(self.builder.set_message(self.skill.title)
|
||||||
|
.set_logo(self.skill.slug)
|
||||||
|
.set_color(self.skill.hex)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.builder.set_message(name)
|
||||||
|
|
||||||
|
def get_builder(self):
|
||||||
|
return self.builder
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
self.__str__()
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.builder.build()
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
from simpleicons.all import icons
|
||||||
|
|
||||||
|
from src.shield.shield_builder import ShieldBuilder
|
||||||
|
|
||||||
|
|
||||||
|
class SocialShield:
|
||||||
|
|
||||||
|
def __init__(self, name: str = None, url: str = None):
|
||||||
|
self.builder = ShieldBuilder().set_style("for-the-badge")
|
||||||
|
self.name = name
|
||||||
|
self.url = url
|
||||||
|
self.social = self.set_social(name, url) if name is not None and url is not None else None
|
||||||
|
|
||||||
|
def get_social(self):
|
||||||
|
return self.social
|
||||||
|
|
||||||
|
def set_social(self, name: str, url: str):
|
||||||
|
self.social = icons.get(name)
|
||||||
|
|
||||||
|
if self.social is not None:
|
||||||
|
(self.builder.set_message(self.social.title)
|
||||||
|
.set_logo(self.social.slug)
|
||||||
|
.set_color(self.social.hex)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.builder.set_message(name)
|
||||||
|
|
||||||
|
self.builder.set_link(url)
|
||||||
|
|
||||||
|
def get_builder(self):
|
||||||
|
return self.builder
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
self.__str__()
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.builder.build()
|
||||||
Reference in New Issue
Block a user