https://www.nmnwiki.com/api.php?action=feedcontributions&user=Webadmin&feedformat=atomnmnwiki - User contributions [en]2024-03-29T12:04:55ZUser contributionsMediaWiki 1.34.1https://www.nmnwiki.com/index.php?title=Main_Page&diff=84346Main Page2021-01-06T21:35:47Z<p>Webadmin: Undo revision 84168 by BreannaDhakiyarr (talk)</p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=Main_Page&diff=80823Main Page2021-01-06T00:44:13Z<p>Webadmin: Undo revision 79220 by JinaBranton798 (talk)</p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=File:Nmnwiki-logo-2.png&diff=250File:Nmnwiki-logo-2.png2020-06-03T18:31:34Z<p>Webadmin: </p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=Main_Page&diff=233Main Page2020-06-02T00:40:39Z<p>Webadmin: </p>
<hr />
<div><div style="display: flex;"><br />
<br />
<div style="width: 45%; background: #ddebe9;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<div style="background:#bfdccd; border:1px solid #a3bfb1; font-weight:bold;padding: 4px 6px; font-size: 16px;line-height: normal">Featured article</div><br />
<div><br />
{{:NMN}}<br />
</div><br />
</div><br />
<div style="width: 35%; background: #e4e8dc;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<br />
<div style="background:#d4dcc1; border:1px solid #b4bf9a; font-weight:bold;padding: 4px 6px; font-size: 16px;line-height: normal">Topics</div><br />
*[[:Category:Research|Research]]<br />
*[[:Category:Key Figures|Key figures]]<br />
*[[:Category:Compounds|Compounds]]<br />
*[[:Category:Institutions|Institutions]]<br />
*[[:Category:Products|Products]]<br />
*[[:Category:Full index|Full index]]<br />
</div><br />
<div style="width: 20%; background: #eee;padding: 5px 5px;border: 1px solid #ddd;"><br />
<br />
<div style="background:#ddd; border:1px solid #bbb; font-weight:bold;padding: 4px 6px; font-size: 16px;line-height: normal">Recommended links</div><br />
<br />
*[[NMN]]<br />
*[[NAD+]]<br />
*[[Sirtuins]]<br />
*[[David Sinclair]]<br />
*[[Shin-ichiro Imai]]<br />
<br />
<div style="background:#ddd; border:1px solid #bbb; font-weight:bold;padding: 4px 6px; font-size: 16px;line-height: normal">Resources</div><br />
<br />
*[https://NMN.com NMN.com]<br />
*[https://pubchem.ncbi.nlm.nih.gov/compound/14180 PubChem Compound Summary]<br />
*[https://reddit.com/r/NicotinamideRiboside/ Nicotinamide Riboside Subreddit]<br />
</div><br />
</div><br />
<br />
==Getting started==<br />
<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]<br />
<br />
==References==<br />
<references /><br />
<br />
__NOTOC__</div>Webadminhttps://www.nmnwiki.com/index.php?title=Main_Page&diff=232Main Page2020-06-02T00:38:46Z<p>Webadmin: </p>
<hr />
<div><div style="display: flex;"><br />
<br />
<div style="width: 45%; background: #ddebe9;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<div style="background:#bfdccd; border:1px solid #a3bfb1; font-weight:bold;padding: 8px; font-size: 16px;line-height: normal">Featured article</div><br />
<div><br />
{{:NMN}}<br />
</div><br />
</div><br />
<div style="width: 35%; background: #e4e8dc;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<br />
<div style="background:#d4dcc1; border:1px solid #b4bf9a; font-weight:bold;padding: 8px; font-size: 16px;line-height: normal">Topics</div><br />
*[[:Category:Research|Research]]<br />
*[[:Category:Key Figures|Key figures]]<br />
*[[:Category:Compounds|Compounds]]<br />
*[[:Category:Institutions|Institutions]]<br />
*[[:Category:Products|Products]]<br />
*[[:Category:Full index|Full index]]<br />
</div><br />
<div style="width: 20%; background: #eee;padding: 5px 5px;border: 1px solid #ddd;"><br />
<br />
<div style="background:#ddd; border:1px solid #bbb; font-weight:bold;padding: 8px; font-size: 16px;line-height: normal">Recommended links</div><br />
<br />
*[[NMN]]<br />
*[[NAD+]]<br />
*[[Sirtuins]]<br />
*[[David Sinclair]]<br />
*[[Shin-ichiro Imai]]<br />
<br />
<div style="background:#ddd; border:1px solid #bbb; font-weight:bold;padding: 8px; font-size: 16px;line-height: normal">Resources</div><br />
<br />
*[https://NMN.com NMN.com]<br />
*[https://pubchem.ncbi.nlm.nih.gov/compound/14180 PubChem Compound Summary]<br />
*[https://reddit.com/r/NicotinamideRiboside/ Nicotinamide Riboside Subreddit]<br />
</div><br />
</div><br />
<br />
==Getting started==<br />
<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]<br />
<br />
==References==<br />
<references /><br />
<br />
__NOTOC__</div>Webadminhttps://www.nmnwiki.com/index.php?title=Main_Page&diff=231Main Page2020-06-02T00:35:58Z<p>Webadmin: /* Recommended links */</p>
<hr />
<div><div style="display: flex;"><br />
<br />
<div style="width: 45%; background: #ddebe9;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<div style="background:#bfdccd; border:1px solid #a3bfb1; font-weight:bold;padding: 8px; font-size: 16px;line-height: normal">Featured article</div><br />
<div><br />
{{:NMN}}<br />
</div><br />
</div><br />
<div style="width: 35%; background: #e4e8dc;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<br />
<div style="background:#d4dcc1; border:1px solid #b4bf9a; font-weight:bold;padding: 8px; font-size: 16px;line-height: normal">Topics</div><br />
*[[:Category:Research|Research]]<br />
*[[:Category:Key Figures|Key figures]]<br />
*[[:Category:Compounds|Compounds]]<br />
*[[:Category:Institutions|Institutions]]<br />
*[[:Category:Products|Products]]<br />
*[[:Category:Full index|Full index]]<br />
</div><br />
<div style="width: 20%; background: #ddd;padding: 5px 10px;border: 1px solid #ccc;"><br />
<br />
<div style="background:#ccc; border:1px solid #a3bfb1; font-weight:bold;padding: 8px; font-size: 16px;line-height: normal">Recommended links</div><br />
<br />
*[[NMN]]<br />
*[[NAD+]]<br />
*[[Sirtuins]]<br />
*[[David Sinclair]]<br />
*[[Shin-ichiro Imai]]<br />
<br />
==Resources==<br />
<br />
*[https://NMN.com NMN.com]<br />
*[https://pubchem.ncbi.nlm.nih.gov/compound/14180 PubChem Compound Summary]<br />
*[https://reddit.com/r/NicotinamideRiboside/ Nicotinamide Riboside Subreddit]<br />
</div><br />
</div><br />
<br />
==Getting started==<br />
<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]<br />
<br />
==References==<br />
<references /><br />
<br />
__NOTOC__</div>Webadminhttps://www.nmnwiki.com/index.php?title=Main_Page&diff=230Main Page2020-06-02T00:34:28Z<p>Webadmin: </p>
<hr />
<div><div style="display: flex;"><br />
<br />
<div style="width: 45%; background: #ddebe9;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<div style="background:#bfdccd; border:1px solid #a3bfb1; font-weight:bold;padding: 8px; font-size: 16px;line-height: normal">Featured article</div><br />
<div><br />
{{:NMN}}<br />
</div><br />
</div><br />
<div style="width: 35%; background: #e4e8dc;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<br />
<div style="background:#d4dcc1; border:1px solid #b4bf9a; font-weight:bold;padding: 8px; font-size: 16px;line-height: normal">Topics</div><br />
*[[:Category:Research|Research]]<br />
*[[:Category:Key Figures|Key figures]]<br />
*[[:Category:Compounds|Compounds]]<br />
*[[:Category:Institutions|Institutions]]<br />
*[[:Category:Products|Products]]<br />
*[[:Category:Full index|Full index]]<br />
</div><br />
<div style="width: 20%; background: #ddd;padding: 5px 10px;border: 1px solid #ccc;"><br />
<br />
==Recommended links==<br />
<br />
*[[NMN]]<br />
*[[NAD+]]<br />
*[[Sirtuins]]<br />
*[[David Sinclair]]<br />
*[[Shin-ichiro Imai]]<br />
<br />
==Resources==<br />
<br />
*[https://NMN.com NMN.com]<br />
*[https://pubchem.ncbi.nlm.nih.gov/compound/14180 PubChem Compound Summary]<br />
*[https://reddit.com/r/NicotinamideRiboside/ Nicotinamide Riboside Subreddit]<br />
</div><br />
</div><br />
<br />
==Getting started==<br />
<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]<br />
<br />
==References==<br />
<references /><br />
<br />
__NOTOC__</div>Webadminhttps://www.nmnwiki.com/index.php?title=Main_Page&diff=229Main Page2020-06-02T00:25:22Z<p>Webadmin: </p>
<hr />
<div><div style="display: flex;"><br />
<br />
<div style="width: 45%; background: #ddebe9;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
==<div style="background:#cef2e0; border:1px solid #a3bfb1; border-bottom: none; font-weight:bold;padding: 5px 8px; font-size: 16px">Featured article</div>==<br />
<div><br />
{{:NMN}}<br />
</div><br />
</div><br />
<div style="width: 35%; background: #e4e8dc;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<br />
==Topics==<br />
*[[:Category:Research|Research]]<br />
*[[:Category:Key Figures|Key figures]]<br />
*[[:Category:Compounds|Compounds]]<br />
*[[:Category:Institutions|Institutions]]<br />
*[[:Category:Products|Products]]<br />
*[[:Category:Full index|Full index]]<br />
</div><br />
<div style="width: 20%; background: #ddd;padding: 5px 10px;border: 1px solid #ccc;"><br />
<br />
==Recommended links==<br />
<br />
*[[NMN]]<br />
*[[NAD+]]<br />
*[[Sirtuins]]<br />
*[[David Sinclair]]<br />
*[[Shin-ichiro Imai]]<br />
<br />
==Resources==<br />
<br />
*[https://NMN.com NMN.com]<br />
*[https://pubchem.ncbi.nlm.nih.gov/compound/14180 PubChem Compound Summary]<br />
*[https://reddit.com/r/NicotinamideRiboside/ Nicotinamide Riboside Subreddit]<br />
</div><br />
</div><br />
<br />
==Getting started==<br />
<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]<br />
<br />
==References==<br />
<references /><br />
<br />
__NOTOC__</div>Webadminhttps://www.nmnwiki.com/index.php?title=Main_Page&diff=228Main Page2020-06-02T00:24:54Z<p>Webadmin: </p>
<hr />
<div><div style="display: flex;"><br />
<br />
<div style="width: 45%; background: #ddebe9;margin-right:5px;padding: 5px 10px;border: 1px solid #ccc;"><br />
==<div style="background:#cef2e0; border:1px solid #a3bfb1; border-bottom: none; font-weight:bold;padding: 5px 8px; font-size: 16px">Featured article</div>==<br />
<div><br />
{{:NMN}}<br />
</div><br />
</div><br />
<div style="width: 35%; background: #e4e8dc;margin-right:5px;padding: 5px 5px;border: 1px solid #ccc;"><br />
<br />
==Topics==<br />
*[[:Category:Research|Research]]<br />
*[[:Category:Key Figures|Key figures]]<br />
*[[:Category:Compounds|Compounds]]<br />
*[[:Category:Institutions|Institutions]]<br />
*[[:Category:Products|Products]]<br />
*[[:Category:Full index|Full index]]<br />
</div><br />
<div style="width: 20%; background: #ddd;padding: 5px 10px;border: 1px solid #ccc;"><br />
<br />
==Recommended links==<br />
<br />
*[[NMN]]<br />
*[[NAD+]]<br />
*[[Sirtuins]]<br />
*[[David Sinclair]]<br />
*[[Shin-ichiro Imai]]<br />
<br />
==Resources==<br />
<br />
*[https://NMN.com NMN.com]<br />
*[https://pubchem.ncbi.nlm.nih.gov/compound/14180 PubChem Compound Summary]<br />
*[https://reddit.com/r/NicotinamideRiboside/ Nicotinamide Riboside Subreddit]<br />
</div><br />
</div><br />
<br />
==Getting started==<br />
<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]<br />
<br />
==References==<br />
<references /><br />
<br />
__NOTOC__</div>Webadminhttps://www.nmnwiki.com/index.php?title=Main_Page&diff=227Main Page2020-06-02T00:24:06Z<p>Webadmin: /* Featured article */</p>
<hr />
<div><div style="display: flex;"><br />
<br />
<div style="width: 45%; background: #ddebe9;margin-right:5px;padding: 5px 10px;border: 1px solid #ccc;"><br />
<h2 id="mp-tfa-h2" style="margin:3px; background:#cef2e0; font-size:120%; font-weight:bold; border:1px solid #a3bfb1; border-bottom: none; text-align:left; color:#000; padding:0.2em 0.4em;">==Featured article==</h2><br />
<div><br />
{{:NMN}}<br />
</div><br />
</div><br />
<div style="width: 35%; background: #e4e8dc;margin-right:5px;padding: 5px 10px;border: 1px solid #ccc;"><br />
<br />
==Topics==<br />
*[[:Category:Research|Research]]<br />
*[[:Category:Key Figures|Key figures]]<br />
*[[:Category:Compounds|Compounds]]<br />
*[[:Category:Institutions|Institutions]]<br />
*[[:Category:Products|Products]]<br />
*[[:Category:Full index|Full index]]<br />
</div><br />
<div style="width: 20%; background: #ddd;padding: 5px 10px;border: 1px solid #ccc;"><br />
<br />
==Recommended links==<br />
<br />
*[[NMN]]<br />
*[[NAD+]]<br />
*[[Sirtuins]]<br />
*[[David Sinclair]]<br />
*[[Shin-ichiro Imai]]<br />
<br />
==Resources==<br />
<br />
*[https://NMN.com NMN.com]<br />
*[https://pubchem.ncbi.nlm.nih.gov/compound/14180 PubChem Compound Summary]<br />
*[https://reddit.com/r/NicotinamideRiboside/ Nicotinamide Riboside Subreddit]<br />
</div><br />
</div><br />
<br />
==Getting started==<br />
<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]<br />
*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]<br />
<br />
==References==<br />
<references /><br />
<br />
__NOTOC__</div>Webadminhttps://www.nmnwiki.com/index.php?title=File:B3_vitamin_biosynthesis_to_NAD%2B.jpg&diff=190File:B3 vitamin biosynthesis to NAD+.jpg2020-05-14T21:09:08Z<p>Webadmin: </p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=Key_Figures&diff=189Key Figures2020-05-14T21:05:04Z<p>Webadmin: Created page with "* Shin-ichiro Imai * David Sinclair * Arthur Harden * William John Young * Conrad Elvehjem"</p>
<hr />
<div>* [[Shin-ichiro Imai]]<br />
* [[David Sinclair]]<br />
* [[Arthur Harden]]<br />
* [[William John Young]]<br />
* [[Conrad Elvehjem]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=SIRT1&diff=188SIRT12020-05-14T21:00:06Z<p>Webadmin: Created page with "'''Sirtuin 1''' ('''SIRT1''') is the most extensively studied type of sirtuin. Scientists heavily implicate this protein in health span and lifespan extension. SIRT1, a member..."</p>
<hr />
<div>'''Sirtuin 1''' ('''SIRT1''') is the most extensively studied type of sirtuin. Scientists heavily implicate this protein in health span and lifespan extension. SIRT1, a member of the silent mating type information regulation 2 protein (sirtuin) family, has a shared gene in other species, including yeast. The shared gene in other animal species allows scientists to study modulating levels of SIRT1 on lifespan. A study of yeast some 20 years ago reveals genetically increasing SIRT1 levels increases lifespan 30% in this species.<br />
This protein depends on nicotinamide adenine dinucleotide (NAD+) to function. With sufficient NAD+, SIRT1 removes molecular markers from other proteins, including the proteins DNA wraps around (histones). As such, scientists classify it as a class III histone deacetylase.<br />
<br />
==SIRT1 function==<br />
Sirt1 has been heavily implicated in control of metabolism and health of the cell’s powerhouse, mitochondria. SIRT1 also plays an important role in the reduction of defective mitochondria. This reduction in defective mitochondria occurs through a process termed mitophagy. Mitophagy entails the cell’s disposal of defective mitochondria<br />
<br />
==Research on SIRT1 in aging==<br />
Studies indicate high expression of SIRT1 in the brain, heart, kidney, liver, pancreas, skeletal muscle, spleen, and fat tissue (white adipose tissue).<ref>Wenyan Cao, Ying Dou, Aiping Li. Resveratrol boosts cognitive function by targeting SIRT1. Neurochem Res, 2018; DOI: 10.1007/s11064-018-2586-8.</ref><ref>GS Kelly. A review of the sirtuin system, its clinical implications, and the potential role of dietary activators like resveratrol: part 2. Altern Med Rev, 2010; 15(4): 313-328.</ref><ref>S Voelter-Mahlknecht, U Mahknecht. Cloning, chromosomal characterization and mapping of the NAD-dependent histone deacetylase gene sirtuin 1. Int J Mol Med, 2006; 17(1):59-67.</ref> An initial study of Sir2 in yeast life span extension demonstrates integrating a second copy of the gene into normal, wild type, yeast increases lifespan 30%.2 In contrast, mice with mutant Sir2 genes have a reduced lifespan of 50%.<ref>Wenyan Cao, Ying Dou, Aiping Li. Resveratrol boosts cognitive function by targeting SIRT1. Neurochem Res, 2018; DOI: 10.1007/s11064-018-2586-8.</ref><ref>M Kaeberlein, M McVey, L Guarente. The SIR2/3/4 complex and SIR2 alone promote longevity in Saccharomyces cerevisiae by two different mechanisms. Genes Dev, 1999; 13(19): 2570-2580.</ref><br />
<br />
==SIRT1 and exercise==<br />
Regular exercise promotes health. Research suggests a significant role of SIRT1 in these effects from exercise.<ref>Z Radak, E Koltai, AW Taylor M Higuchi, S Kumagai, H Ohno, S Goto, I Boldogh. Redox regulating sirtuins in aging, carloric restriction, and exercise. Free Radic Biol Med, 2013; 58: 87-97.</ref><ref>Zsolt Radak, Katsuhiko Suzuki, Aniko Posa, Zita Petrovszky, Erika Koltai, Istvan Boldogh. The systemic role of SIRT1 in exercise mediated adaptation. Redox Biol, 2020; DOI: 10.1016/j.redox.2020:101467.</ref>It also suggests SIRT1-related adaptations from exercise occur in the liver, kidney, brain, heart, and skeletal muscle.<ref>Zsolt Radak, Katsuhiko Suzuki, Aniko Posa, Zita Petrovszky, Erika Koltai, Istvan Boldogh. The systemic role of SIRT1 in exercise mediated adaptation. Redox Biol, 2020; DOI: 10.1016/j.redox.2020:101467.</ref><br />
<br />
A major effect of exercise entails protecting brain function. Improvements in brain function from exercise result in increased resistance to cellular stress,<ref>Zsolt Radak, Katsuhiko Suzuki, Aniko Posa, Zita Petrovszky, Erika Koltai, Istvan Boldogh. The systemic role of SIRT1 in exercise mediated adaptation. Redox Biol, 2020; DOI: 10.1016/j.redox.2020:101467.</ref><ref>Z Radak, AW Taylor, H Ohno, S Goto. Adaptation to exercise-induced oxidative stress: from muscle to brain. Exerc Immunol, 2001; 7: 90-107.</ref><ref>S Siamilis, J Jakus, C Nyakas, A Costa, B Mihalik, A Falus, Z Radak. The effect of exercise and oxidant-antioxidant intervention on the levels of neurotrophins and free radicals in spinal cord of rats. Spinal Cord, 2009; 47: 453-457.</ref>increased production of neurons,<Zsolt Radak, Katsuhiko Suzuki, Aniko Posa, Zita Petrovszky, Erika Koltai, Istvan Boldogh. The systemic role of SIRT1 in exercise mediated adaptation. Redox Biol, 2020; DOI: 10.1016/j.redox.2020:101467.<nowiki></ref></nowiki><ref>I Sarga, N Hart, IG Koch, SI Britton, G Hajas, I Boldogh, X Ba, Z Radak. Aerobic endurance capacity affects spatial memory and SIRT1 is a potent modulator of 8-oxoguanine repair. Neuroscience, 2013; 252: 326-336.</ref> and increased production of the cell’s powerhouse in neurons (mitochondria).<ref>K Marosi, K Felszeghy, RD Mehra, Z Radak, C Nyakas. Are the neuroprotective effects of estradiol and physical exercise comparable during ageing in female rats? Biogerontology, 2012; 13: 413-427.</ref><ref>Zsolt Radak, Katsuhiko Suzuki, Aniko Posa, Zita Petrovszky, Erika Koltai, Istvan Boldogh. The systemic role of SIRT1 in exercise mediated adaptation. Redox Biol, 2020; DOI: 10.1016/j.redox.2020:101467.</ref><br />
<br />
Stimulation of SIRT1 function through exercise can result in these effects on protecting brain function.<ref>H Jeong, DE Cohen, I. Cui, A Supinski, JN Savas, JR Mazzulli, JR Yates, L Bordone, L Guarente, D Kraine. Sirt1 mediates neuroprotection from mutant huntingtin by activation of the TORC1 and CREB transcriptional pathway. Nat Med, 2012; 18: 159-165.</ref><ref>L Liu, Q Zhang, Y Cai, D Sun, X He, L Wang, D Yu, X Li, X Xiong, H Xu, Q Yang, X Fan. Resveratrol counteracts lipopolysaccharide-induced depressivelike behaviors via enhanced hippocampal neurogenesis. Oncotarget, 2016; 7: 56045-56059.</ref><ref>CY Ma, MJ Yao, QW Zhai, JW Jiao, XB Yuan, MM Poo. SIRT1 suppresses self-renewal of adult hippocampal neural stem cells. Development, 2014; 141: 1697-4709.</ref><ref>Zsolt Radak, Katsuhiko Suzuki, Aniko Posa, Zita Petrovszky, Erika Koltai, Istvan Boldogh. The systemic role of SIRT1 in exercise mediated adaptation. Redox Biol, 2020; DOI: 10.1016/j.redox.2020:101467.</ref><ref>SA Shah, M Khan, MH Jo, MG Jo, FU Amin, MO Kim. Melatonin stimulates the SIRT1/nrf2 signaling pathway counteracting lipopolysaccharide (LPS)-induced oxidative stress to rescue postnatal rat brain. CNS Neurosci Ther, 2017; 23: 33-44.</ref><ref>SJ Wang, XH Zhao, W Chen, N Bo, XJ Wang, ZF Chi, W Wu. Sirtuin 1 activation enhances the PGC-1a/mitochondrial antioxidant system pathway in status epilepticus. Mol Med Rep, 2015; 11: 521-526.</ref> Exercise does increase SIRT1 content in the brain. The molecular mechanism mediating exercise’s effects in protecting brain function may very well stem from it increasing SIRT1 levels.<ref>F Gomez-Pinilla, Z Ying. Differential effects of exercise and dietary docosahexaenoic acid on molecular systems associated with control of allostasis in the hypothalamus and hippocampus. Neuroscience, 2010; 168: 130-137.</ref><ref>Zsolt Radak, Katsuhiko Suzuki, Aniko Posa, Zita Petrovszky, Erika Koltai, Istvan Boldogh. The systemic role of SIRT1 in exercise mediated adaptation. Redox Biol, 2020; DOI: 10.1016/j.redox.2020:101467.</ref><br />
<br />
SIRT1 depends on sufficient levels of NAD+, which decline as people age. Exercise makes NAD+ molecules more readily available for SIRT1. NAD+ exists in higher concentrations in its non-reduced form, as opposed to having electrons as NADH. This helps SIRT1 function. Regular exercise rejuvenates aged skeletal muscle, also. This happens partly due to stimulating SIRT1 function. Research has uncovered much related to SIRT1 cellular function. Researchers still have much to learn on this topic.<ref>Zsolt Radak, Katsuhiko Suzuki, Aniko Posa, Zita Petrovszky, Erika Koltai, Istvan Boldogh. The systemic role of SIRT1 in exercise mediated adaptation. Redox Biol, 2020; DOI: 10.1016/j.redox.2020:101467.</ref><br />
<br />
==Resveratrol stimulates SIRT1==<br />
SIRT1 has gained interest due to its role in improving brain functions. [[Resveratrol]], a plant compound found in grapes, berries, and peanuts, improves brain function through stimulating SIRT1.<ref>Wenyan Cao, Ying Dou, Aiping Li. Resveratrol boosts cognitive function by targeting SIRT1. Neurochem Res, 2018; DOI: 10.1007/s11064-018-2586-8.</ref><br />
<br />
Resveratrol stimulates SIRT1 activity up to eight-fold.<ref>MT Borra, BC Smith, JM Denu. Mechanism of human SIRT1 activation by resveratrol. J Biol Chem, 2005; 280: 17187-17195.</ref><ref>Wenyan Cao, Ying Dou, Aiping Li. Resveratrol boosts cognitive function by targeting SIRT1. Neurochem Res, 2018; DOI: 10.1007/s11064-018-2586-8.</ref><ref>BP Hubbard, DA Sinclair. Small molecule SIRT1 acitvators for the treatment of aging and age-related diseases. Trends Pharmacol, 2014; 35: 146-154.</ref>The effectiveness of resveratrol activating SIRT1 remains debatable. Research on various animals, though, demonstrates resveratrol stimulates SIRT1 function to protect against declining brain function.<ref>Wenyan Cao, Ying Dou, Aiping Li. Resveratrol boosts cognitive function by targeting SIRT1. Neurochem Res, 2018; DOI: 10.1007/s11064-018-2586-8.</ref><ref>LL Du, JZ Xie, XS Cheng, XH Li, FL Kong, X Jiang, ZW Ma, JZ Wang, C Chen, XW Zhou. Activation of sirtuin 1 attenuates cerebral ventricular streptozotocin-induced tau hyperphosphorylation and cognitive injuries in rat hippocampi. Age (Dordr), 2014; 36: 613-623.</ref><br />
<br />
==References==<br />
<references /><br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Epigenetics_of_aging&diff=187Epigenetics of aging2020-05-14T20:58:27Z<p>Webadmin: Created page with "'''Epigenetics''' refers to changes in characteristics, called phenotypes, passed to new cells which do not come from changes in the DNA sequence.<ref>Y Li, M Daniel, TO Tolle..."</p>
<hr />
<div>'''Epigenetics''' refers to changes in characteristics, called phenotypes, passed to new cells which do not come from changes in the DNA sequence.<ref>Y Li, M Daniel, TO Tollefsbol. '''Epigenetic regulation of caloric restriction in aging'''. ''BMC Med'', 2011; 9: 98.</ref> These characteristics can be transferred when the body generates new tissue. Such changes stem from molecular alterations which influence gene activity. The changes in gene activity resulting from epigenetic modifications can alter protein production.<br />
<br />
==DNA, chromatin, and histones==<br />
Chromatin consists of DNA wrapped around proteins called ‘histones.’ Eight histones, an octamer, conglomerate with DNA wrapped around the histones to form a nucleosome. A nucleosome, contains H2A, H2B, H3, and H4 histone proteins. DNA wraps around an H1 histone to form ‘linker DNA’ between nucleosomes.<br />
<br />
===Chromatin structures===<br />
Aggregations of DNA and histone proteins organized into nucleosomes form molecular structures called ‘chromatin’ in the ‘nucleus’ of cells. Loosely compacted chromatin, called ‘euchromatin,’ contains more active DNA in comparison to densely compacted chromatin, ‘heterochromatin,’ which is mostly inactive. Genes from DNA in euchromatin undergo a process called ‘transcription,’ where DNA is copied to RNA via an enzyme, RNA polymerase. Ribosomes, proteins in the aqueous ‘cytoplasm’ outside of the cell nucleus, then synthesize proteins based on the RNA in a process termed ‘translation.’<br />
<br />
===DNA modifications===<br />
One major DNA modification occurring in the nucleus of cells is ‘DNA methylation.’ Methylation consists of adding a methyl group (-CH<sub>3</sub>) to DNA, which usually inhibits DNA transcription and translation, also referred to as inhibiting ‘gene expression.’ This DNA modification, methylation, often occurs in regions of the DNA where transcription starts, promoter regions. Methylation of promoter regions typically blocks attachment of proteins called ‘transcription factors,’ thereby preventing transcription and subsequent protein production through translation.<br />
<br />
===Histone modifications===<br />
Molecular tags can modify histones. These tags include methylation, phosphorylation, acetylation, ubiquitylation, and sumoylation. These molecular tags on histones influence chromatin compaction and influence what genes get transcribed to RNA and then translated to proteins. <br />
<br />
==Epigenetics and aging==<br />
Aging manifests as a reduction of normal functions of the body over time. Aging is important to human health due to increased susceptibility to diseases like cancer, metabolic disorders, heart disorders, and neurological disorders.<ref name=":0">Sangita Pal, Jessica K Tyler. '''Epigenetics and aging'''. ''Sci Adv'', 2016; DOI: 10.1126/sciadv.1600584.</ref> Causes of aging remain poorly understood, but scientists continue to try to acquire knowledge of the molecular pathways involved. In search of molecular hallmarks of aging, scientists have found epigenetic alterations, representing a crucial cellular mechanism of declining cell function with age.<ref name=":0" /><br />
<br />
The chromosomes containing DNA carry genetic information, while the epigenetic modifications provide the functional use and stability of this information.<ref name=":0" /><ref>AD Goldberg, CD Allis, E Bernstein. '''Epigenetics: A landscape takes shape'''. ''Cell'', 2007; 128: 635-638.</ref><ref>U Munoz-Najar, JM Sedivy. '''Epigenetic control of aging'''. ''Antioxid Redox Signal'', 2011; 14: 241-259.</ref><ref name=":3">RJ O’Sullivan, J Karlseder. '''The great unravelling: Chrommatin as a modulator of the aging process'''. ''Trends Biochem'', 2012; 37: 466-476.</ref><ref>L Zane, V Sharma, T Misteli. '''Common features of chromatin in aging and cancer: Cause or coincidence?''' ''Trends Cell Biol'', 2014; 24: 686-694.</ref> Epigenetic changes are reversible and can occur spontaneously or from external or internal influences.<ref name=":0" /> Epigenetics could serve as the missing link in explaining why aging patterns differ between genetically identical twins or between genetically identical queen and worker bees.<ref name=":1">A Brunet, SL Berger. '''Epigenetics of aging and aging-related disease'''. ''J Gerontol A Biol Sci Med Sci'', 2014; 69 (Suppl. 1): S17-S20.</ref><ref>MF Fraga, E Ballestar, MF Paz, S Ropero, F Setien, ML Ballestar, D Heine-Suner, JC Cigudosa, M Urioste, J Benitez, M Coix-Chornet, A Sanchez-Aguilera, C Ling, E Carlsson, P Poulsen, A Vaag, Z Stephan, TD Spector, Y-Z Wu, C Plass, M Estellar. '''Epigenetic differences arise during the lifetime of monozygotic twins'''. ''Proc Natl Acad Sci'', 2005; 102: 10604-10609.</ref><ref name=":0" /><ref>M Sargent. '''Why twins age differently'''. ''Nature'', 2010; 464: 1130-1131.</ref> Studies of longevity show genetic factors could explain 20% to 30% of the differences between life spans of identical twins; however, most of the remaining differences are thought to come from epigenetic changes throughout life.<br />
<br />
Different environmental influences, such as diet, cause changes in stored epigenetic information and striking differences in physical appearance, reproductive behavior, and lifespan of worker and queen honeybees. This results despite the bees having identical DNA content.<ref name=":0" /><ref>R Kucharski, J Maleszka, S Foret, R Maleszka. '''Nutritional control of reproductive status in honeybees via DNA methylation'''. ''Science'', 2008; 319: 1827-1830.</ref><br />
<br />
Given enzymes establish epigenetic modifications, epigenetic information is reversible. Due to this reversibility, epigenetics holds prospects for therapeutic intervention targeting. This stands in contrast to genetic changes, which are not technically reversible in humans.<ref name=":0" /> Understanding epigenetic changes occurring during aging is therefore a major area of study, which could pave the way for new therapeutic methods of delaying aging and diseases caused by aging.<br />
<br />
==Types of epigenetic information==<br />
Encoded in the epigenetic information, termed ‘epigenome,’ is information in the form of presence or absence of histones on particular DNA sequences, DNA methylation, chromatin, remodeling, modifications of the histone proteins (posttranslational modifications), functional and structural variants of histones, and noncoding RNAs.<ref name=":1" /><ref>J Feser, J Tyler. '''Chromatin structure as a mediator of aging'''. ''FEBS Lett'', 2011; 585: 2041-2048.</ref><ref name=":3" /><ref name=":0" /> These factors play crucial roles in determining the function of cells and tissues. Each of these types of epigenetic information plays an essential role in the process of aging.<br />
<br />
Evidence suggests chromatin structure, carrying much of the epigenetic information, has a major role during aging. The basic unit of the chromatin structure, the nucleosome, consists of 147 base pairs of DNA wrapped around a histone octamer with eight subunits. With the addition of linker histones, like H1 between nucleosomes, higher order structures of chromatin repressing gene activity, such as heterochromatin, can be formed. Organizing DNA into highly organized chromatin structures regulates gene activity. <br />
<br />
==Mechanisms of aging based on epigenetics==<br />
The process of aging is quite complex. Aging cells undergo numerous changes and accrue damage. Evidence continues to accumulate showing cellular processes affecting aging act primarily through epigenetic modifications. Without a doubt, epigenetic influences over aging need to be incorporated into the current understanding of processes of aging.<br />
<br />
===The heterochromatin loss model of aging===<br />
The “heterochromatin loss model of aging” suggests a loss of heterochromatin ensues with aging, leading to expression of genes lying in regions of heterochromatin. According to the model, this loss of heterochromatin causes aging and loss of cellular functions.<br />
<br />
===Global histone protein reduction during aging===<br />
Not only has heterochromatin reorganization during aging been observed but a loss of histone proteins from chromosomes during aging has also been found. This has been shown as a cause of aging in yeast.<ref name=":0" /> The histone protein loss observed in yeast has also been observed in aging worms<ref>Z Ni, A Ebata, E Alipanahiramandi, SS Lee. '''Two SET domain containing genes link epigenetic changes and aging in ''Caenorhabditis elegans''. ''' ''Aging Cell'', 2012; 11: 315-325.</ref><ref name=":0" /> and in human cells.<ref>A Ivanov, J Pawlikowski, I Mmanoharan, J van Tuyn, DM Nelson, TS Rai, PP Shah, G Hewitt, VI Korolchuk, JF Passos, H Wu, SL Berger, PD Adams. '''Lysosome-mediated processing of chromatin in senescence'''. ''J Cell Biol'', 2013; 202: 129-143.</ref><ref>RJ O’Sullivan, S Kubicek, SL Schreiber, J Karlseder. '''Reduced histone biosynthesis and chroatin changes arising from a damage signal at telomeres'''. ''Nat Struct Mol Biol'', 2010; 17: 1218-1225.</ref><ref name=":0" /> Loss of histone proteins in aged cells could cause inappropriate access to genetic material and subsequent gene activity.<br />
<br />
===Genomic instability resulting from chromatin relaxation during aging and the “aging by transposition” model===<br />
Chromatin in a looser state due to heterochromatin loss or histone loss could induce transcriptional dysfunction and also instability of chromosomes. Reduced histone proteins in old yeast led to more DNA breaks and insertions of DNA in inappropriate areas of the DNA sequence.<ref name=":0" /> DNA damage can drive organismal aging.<br />
<br />
===Histone variant changes with aging===<br />
Histones which are distinctly different from core histones regulate chromatin. Age-associated changes for these “variant” histones are greater than for the core histones. For example, histone H3.3 is a histone H3 variant which incorporates with chromosomes whether or not DNA replication occurs. When cells are no longer dividing in older age, the H3.3 histone incorporates excessively in chromatin to drive aging in cells.<ref name=":0" /><br />
<br />
===Histone modification changes during aging===<br />
Histones of chromatin undergo a variety of modifications, such as methylation or acetylation. These modifications enable the regulation of the use of DNA sequences for gene activity, called gene expression. Histone modifications can reduce chromatin organization or provide binding surfaces to the DNA sequence so they can recruit other proteins to regions of the chromatin. The array of histone modifications orchestrates functional responses, which are diverse and which are incompletely understood. These responses regulate gene transcription, DNA repair, DNA replication, condensation of chromatin, and other events which affect processes, including aging.<ref name=":0" /><br />
<br />
===Nucleosome remodeling and aging===<br />
The cell regulates nucleosome alterations to contribute to processes of DNA expression. Mutations of nucleosome remodelers in cells have been associated with several age-related diseases and cancers.<ref name=":0" /><ref>GJ Narlikar, R Sundaramoorthy, T Owen-Hughes. '''Mechanisms and functions of ATP-dependent chromatin-remodeling enzymes'''. ''Cell'', 2013; 154: 490-503.</ref><ref>CR Clapier, BR Cairns. '''The biology of chromatin remodeling complexes'''. ''Annu Rev Biochem'', 2009; 78: 273-304.</ref><br />
<br />
===DNA methylation changes and aging===<br />
DNA methylation is perhaps the most studied and characterized epigenetic marker during aging.<ref name=":0" /><ref name=":2">M Jung, GP Pfeifer. '''Aging and DNA methylation'''. ''BMC Biol'', 2015; 13: 7.</ref> Stretches of DNA within and between genes have repeats of bases called ‘CpG’ repeats. The ‘C’ represents the cytosine base, the ‘p’ represents the phosphodiester backbone of DNA, and the ‘G’ represents the guanine base. These repeated stretches can undergo methylation. In young cells, most CpG stretches throughout all DNA, the genome, have methylation. This methylation leads to repressed activity of genes and compact chromatin structures, like heterochromatin. Genes with high activity, highly expressed genes, do not have much DNA methylation and are called ‘CpG islands.’ DNA methylation is important in development, where it silences gene expression in tissues where their activity will not be needed.<br />
<br />
During aging of identical twins, DNA methylation patterns become more different when compared to each other. These differences come from ‘epigenetic drift,’ which causes epigenetic differences from environmental factors or spontaneous errors in processes of DNA methylation pattern transmission.<ref name=":0" /><ref>MF Fraga, E Ballestar, MF Paz, S Ropero, F Setien, ML Ballestar, D Heine-Suner, JC Cigudosa, M Urioste, J Benitez, M Coix-Chornet, A Sanchez-Aguilera, C Ling, E Carlsson, P Poulsen, A Vaag, Z Stephan, TD Spector, Y-Z Wu, C Plass, M Estellar. '''Epigenetic differences arise during the lifetime of monozygotic twins'''. ''Proc Natl Acad Sci'', 2005; 102: 10604-10609.</ref> Epigenetic drift causes differences in methylation patterns between people which cannot be predicted. Some methylation changes with age involve specific regions of the genome. These DNA methylation changes during aging could be associated with cellular mechanisms of the aging process.<br />
<br />
In mammals, aging is more commonly associated with reduced methylation of CpG stretches of DNA. This is probably partly responsible for heterochromatin loss during aging. The decrease in DNA methylation with aging may also come from reduced levels of the enzyme which methylates DNA, DNMT1.<ref name=":0" /><ref name=":2" /><br />
<br />
===Non-coding RNAs and aging===<br />
Contrasting with earlier beliefs, it is widely accepted now that about 60 to 90% of the human genome is transcribed.<ref>ENCODE Project Consortium et al. '''Identification and analysis of functional elements in 1% of the human genome by the ENCODE pilot project'''. ''Nature'', 2007; 447: 799-816.</ref><ref name=":0" /><ref>JE Wilusz, H Sunwoo, DL Spector. '''Long noncoding RNAs: Functional surprises from the RNA world'''. ''Genes Dev'', 2009; 1494-1504.</ref> This gives rise to a substantial array of non-coding RNAs. Non-coding RNAs have epigenetic effects and have significant influence on altering gene expression and chromatin packing. A complete understanding of the many biological functions of non-coding RNAs has yet to be understood.<ref>FF Costa. '''Non-coding RNAs: Meet thy masters'''. ''Bioessays'', 2010; 32: 599-608.</ref><ref name=":0" /><ref>TR Cech, JA Steitz. '''The noncoding RNA revolution—Trashing old rules to forge new ones'''. ''Cell'', 2014; 157: 77-94.</ref> Disrupting non-coding RNA function has been associated with diseases such as cancer, neurological disorders, heart disorders, and aging.<ref>K Szafranski, KJ Abraham, K Mekhail. '''Non-coding RNA in neural function, disease, and aging'''. ''Front Genet'', 2015; 6: 87.</ref><ref>M Esteller. '''Non-coding RNAs in human disease'''. ''Nat Rev Genet'', 2011; 12: 861-874.</ref><ref name=":0" /><br />
<br />
===Transgenerational epigenetic changes affecting aging===<br />
Biological dogma says genetics dictates inherited traits across generations. This dogma has been challenged with evidence of epigenetic inheritance in the production of gametes, eggs and sperm cells. Scientists made these observations in flower color and symmetry in plants and coat color and size in mice.<ref>EL Greer, TJ Maures, D Ucar, AG Hauswirth, E Mancini, JP Lim, BA Benayoun, Y Shi, A Brunet. '''Transgenerational epigenetic inheritance of longevity in ''Caenorhabditis elegans'''''. ''Nature'', 2011; 479: 365-371.</ref><ref>JP Lim, A Brunet. '''Bridging the transgenerational gap with epigenetic memory'''. ''Trends Genet'', 2013; 29: 176-186.</ref><ref name=":0" /> Longevity has recently been shown to be epigenetically inherited for several generations due to histone methylation.<ref name=":0" /> This implicates, for the first time, epigenetic inheritance across generations in regulating lifespan.<br />
<br />
===Lifespan-extending methods functioning partly through epigenetic changes===<br />
Altering epigenetic information has attracted attention as a promising way to extend lifespan, because epigenetic changes can be modulated with manipulating relevant enzymes. Epigenetic interventions altering epigenetic information hold the potential to extend lifespan and combat age-associated diseases like cancer and neurological disorders.<br />
<br />
The most readily available means to extend lifespan is dietary restriction. This method involves limiting the number of calories an organism consumes. This method has profound effects in many organisms, including yeast, flies, worms, mice, and primates.<ref name=":0" /> Evidence suggests epigenetic alterations, including DNA methylation and histone modifications, may be crucial in lifespan extension with dietary restriction.<ref>K Szafranski, KJ Abraham, K Mekhail. '''Non-coding RNA in neural function, disease, and aging'''. ''Front Genet'', 2015; 6: 87.</ref><ref>A Vaquero, D Reinberg. '''Calorie restriction and the exercise of chromatin'''. ''Genes Dev'', 2009; 23: 1849-1869.</ref><ref name=":0" /><br />
<br />
Metformin, an antidiabetic drug, induces effects similar to dietary restriction.<ref name=":0" /><ref>VN Anisimov. '''Metformin: Do we finally have an anti-aging drug?''' ''Cell Cycle'', 2013; 12: 3483-3489.</ref> A recent study involving more than 180,000 people showed diabetes patients treated with metformin lived longer than other diabetic patients and also lived longer than healthy adults in the study.<ref>CA Bannister, SE Holden, S Jenkins-Jones, CL Morgan, JP Halcox, G Schernthaner, J Mukherjee, CJ Currie. '''Can people with type 2 diabetes live longer than those without? A comparison of mortality in people initiated with metformin or sulphonylurea monotherapy and matched, non-diabetic controls'''. ''Diabetes Obes Metab'', 2014; 16: 1165-1173.</ref><ref name=":0" /> Another recent report provided evidence metformin’s mechanism of action occurs through epigenetic regulation. Increased levels of SIRT1 were observed with metformin treatment in human subjects.<ref name=":0" /><ref>SV de Kreutzenberg, G Ceolotto, A Cattelan, E Pagnin, M Mazzucato, P Garagnani, V Borelli, MG Bacalini, C Franceschi, GP Fadini, A Avogaro. '''Metformin improves putative longevity effectors in peripheral mononuclear cells from subjects with prediabetes'''. '''A randomized controlled trial'''. ''Nutr Metab'', 2015; 25: 686-693.</ref> SIRT1 is involved in preserving chromosome stability, repairing damaged DNA, and cellular health maintenance.<br />
<br />
==References==<br />
<references /><br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Cellular_aging&diff=186Cellular aging2020-05-14T20:58:08Z<p>Webadmin: Created page with "'''Cellular aging''' also known as '''cellular senescence''' is a state where cells stop proliferating. Cell proliferation happens throughout an organism’s lifespan so newer..."</p>
<hr />
<div>'''Cellular aging''' also known as '''cellular senescence''' is a state where cells stop proliferating. Cell proliferation happens throughout an organism’s lifespan so newer cells replace older cells throughout the body. As such, cells undergoing senescence enter permanent “cell cycle arrest,” where they stop dividing and proliferating. The accumulation of these senescent cells can lead to tissues which cannot regenerate. Inflammation also occurs in such tissues, resulting in the progression of age-related diseases.<ref>Alejandra Hernandez-Segura, Jamil Nehme, Marco Demaria. '''Hallmarks of cellular senescence'''. ''Trends Cell Biol'', 2018; DOI: 10.1016/j.tcb.2018.02.001.</ref><ref>Pacome Lecot, Fatouma Alimirah, Pierre-Yves Desprez, Judith Campisi, Christopher Wiley. '''Context-dependent effects of cellular senescence in cancer development'''. ''Br J Cancer'', 2016; DOI: 10.1038/bjc.2016.115.</ref><ref name=":0">NE Sharpless, CJ Sherr. '''Forging a signature of ''in vivo'' senescence'''. ''Nat Rev Cancer'', 2015; 15: 397-408.</ref> A main feature of aging is the build-up of cellular senescence.<br />
<br />
==Types of cellular senescence==<br />
Cellular senescence can occur due to different kinds of environmental stimuli, at least in cells and tissue in petri dishes in laboratories. Scientists still need to investigate whether these types of cellular senescence occur in living organisms. The two types of recognized cellular senescence is DNA damage-induced and Oxidative stress-induced senescence.<br />
<br />
===DNA damage-induced senescence===<br />
DNA damage-induced senescence constitutes one type of cellular senescence observed in laboratories. Depending on the magnitude of DNA damage, cell death can also occur in this situation. Scientists use radiation and drug-induced DNA damage to study this type of senescence. Oncogene-induced senescence occurs with activation of cancer-causing genes, oncogenes. This type of senescence can also occur with the activation of genes which suppress tumors, tumor suppressor genes.<br />
<br />
===Oxidative stress-induced senescence===<br />
Oxidative stress-induced senescence occurs with cellular production of byproducts of metabolism (metabolites), which cause cell stress through reactive oxygen species, unstable molecules or ions. Agents such as hydrogen peroxide can also induce this type of cellular senescence. Oxidative stress-induced senescence can cause DNA damage and also adversely affect other cellular components and processes. Chemotherapy-induced senescence results from multiple anticancer drugs used to induce senescence. Some anticancer drugs act through DNA damage, while others act through inhibition of cellular enzymes.<br />
<br />
Induction of dysfunction in the cell’s powerhouse, mitochondrial dysfunction, also leads to senescence through mitochondrial dysfunction-associated senescence. This type of senescence typically occurs through the senescence-associated secretory phenotype (SASP), a set of inflammatory molecules which senescent cells secrete. Different cellular mechanisms lead to mitochondrial dysfunction, such as reduced integrity of the membrane or surface of the mitochondria. Dysfunctional generation of new mitochondria can also occur in cells, leading to reduced function of mitochondria.<br />
<br />
[[Epigenetics of aging|Epigenetically-induced senescence]] occurs with the function of enzymes which alter gene activity. Some of these enzymes activate gene activity, histone demethylases, while others repress gene activity, histone deacetylases.<br />
<br />
==Cell characteristics to detect cellular senescence==<br />
Multiple characteristics have been used to determine whether cells are senescent. Combinations of these characteristics must be observed to determine senescence, because there is no single marker specifically indicating a cell has reached senescence. Therefore, scientists need to observe multiple cellular senescence characteristics to determine cellular senescence.<br />
<br />
===DNA damage response===<br />
Scientists can detect markers indicating repair of DNA damage. Phosphorylated p53, a signaling enzyme in the DNA damage response, can be used.<ref>D Munoz-Espin, M Serrano. '''Cellular senescence: from physiology to pathology'''. ''Nat Rev Mol Cell Biol'', 2014; 15: 482-496.</ref> Cell cycle arrest: scientists measure the ability of cells to proliferate to determine whether they have undergone senescence. They also measure the rate of new DNA formation, DNA synthesis.<br />
<br />
===Cell secretion===<br />
What the cell secretes by measuring markers indicating inflammation, such as IL-6, can help determine if cells are senescent.<ref>Yi Zhu, Tamara Tchkonia, Tamar Pirtskhalava, Adam C Gower, Husheng Ding, Nino Giogadze, Allyson K Palmer, Yuji Ikeno, Gene B Hubbard, Marc Lenburg, Steven P. O’Hara, Nicholas F. LaRusso, Jordan D Miller, Carolyn M Roos, Grace C Verzosa, Nathan K LeBrasseur, Jonathan D Wren, Joshua N Farr, Sundeep Khosla, Michael B Stout, Sara J McGowan, Heike Fuhrmann-Stroissnigg, Aditi U Gurkar, Jing Zhao, Debora Colangelo, Akaitz Dorronsoro, Yuan Yuan Ling, Amira S Barghouthy, Diana C Navarro, Tokio Sano, Paul D Robbins, Laura J Niedernhofer, James J Kirkland. '''The Achille’s heel of senescent cells: from transcriptome to senolytic drugs'''. ''Aging'', 2015; 14: 644-658.</ref><br />
<br />
===Metabolism===<br />
This feature is not often used to determine senescence, because scientists cannot agree upon how senescence affects metabolism.<br />
<br />
===Cell size===<br />
Scientists can identify senescent cells based on their size using a microscope. Senescent cells have enlarged and irregular body shapes.<ref name=":0" /><br />
<br />
==Senescence and health==<br />
Senescent cells in adults accumulate in three conditions of human health: normal aging, diseases from aging, and therapeutic interventions.<ref name=":1">Bennett G Childs, Matej Durik, Darren J Baker. '''Cellular senescence in aging and age-related disease: from mechanisms to therapy'''. ''Nat Med'', 2015; DOI: 10.1038/nm.4000.</ref> In normal aging, dysfunctional tissue in the body occurs in all individuals. Diseases from aging only occur in some individuals. Dysfunctional tissue in older individuals causes damage, resulting in senescence.<br />
<br />
Senescent cells accumulate in the body during the aging process due to immune system deficiencies. Senescent cells from repaired wounds, healed tumors, or other unknown processes may not undergo immune system disposal. This situation leads to aged, senescent cells which remain in the body. The tissues carrying aged, senescent cells become further susceptible to dysfunction when other stressors occur on the body.<ref name=":1" /><br />
<br />
Additional stress to the body can result in disease with tissues carrying accumulations of aged, senescent cells. Tissue rich in aged, senescent cells are particularly vulnerable to disease when they contain aged fat coupled with a high-fat diet.<ref name=":1" /><ref>T Minamino, et al. '''A crucial role for adipose tissue p53 in the regulation of insulin resistance'''. ''Nat Med'', 2009; 15: 1082-1087.</ref><ref>AS Ryan. '''Insulin resistance with aging: effects of diet and exercise'''. ''Sports Med'', 2000; 30: 327-346.</ref><ref>I Shimizu, et al. '''p53-induced adipose tissue inflammation is critically involved in the development of insulin resistance in heart failure'''. ''Cell Metab'', 2012; 15: 51-64.</ref> Stressors can come from unusual sources, such as cigarette smoke or erosion of the ends of chromosomes (telomeres) after repair from smoke-damaged lung tissue.<ref>MS Walters, et al. '''Smoking accelerates aging of the small airway epithelium'''. ''Respir Res'', 2014; 15: 94.</ref><ref name=":1" /> <br />
<br />
Diseased tissue in the body also produces senescent cells. Accumulation of aged, senescent cells may occur in only one or a few organs. Accumulation of aged, senescent cells in these tissues occurs at a much higher rate due to prolonged and intense stressors from the disease.<ref name=":1" /><br />
<br />
Therapy-induced accumulation of aged, senescent cells occurs as a response to potent stressors from outside of the body. This can occur as a side effect of medical treatments, due to the goal of the treatment, or due to both side effects and the goal. As an example, which encompasses both side effects and goals of treatment, DNA-damaging therapy and irradiation for cancer activates aging and senescence in tumor cells. The goal of the treatment is to eliminate cancer cells through causing them to age and senesce. As a side effect, healthy cells undergo aging and senescence as well.<ref name=":1" /><br />
<br />
==References==<br />
<references /><br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Nicotinamide_mononucleotide_(NMN)_supplementation_rescues_cerebromicrovascular_endothelial_function_and_neurovascular_coupling_responses_and_improves_cognitive_function_in_aged_mice&diff=185Nicotinamide mononucleotide (NMN) supplementation rescues cerebromicrovascular endothelial function and neurovascular coupling responses and improves cognitive function in aged mice2020-05-14T20:56:37Z<p>Webadmin: Created page with "'''Nicotinamide mononucleotide (NMN) supplementation rescues cerebromicrovascular endothelial function and neurovascular coupling responses and improves cognitive function in..."</p>
<hr />
<div>'''Nicotinamide mononucleotide (NMN) supplementation rescues cerebromicrovascular endothelial function and neurovascular coupling responses and improves cognitive function in aged mice''' is a mouse study which investigated the effects of [[NMN supplementation]] on neurovascular coupling and endothelial functioning in aged mice. The three experimental groups were young mice, aged control mice, and aged mice treated for 14 days with 500mg/kg of [[NMN]] injected intra-peritoneally. The authors found that although in aging control mice, brain endothelial [[NAD+|NAD<sup>+</sup>]] was decreased to about 70% of young mice, treatment with NMN was associated in a statistically significant increase in NAD<sup>+</sup> to about the level of healthy young mice (p < 0.05). The authors further reported that NMN supplementation was associated with improved cerebral blood flow in response to stimulus, demonstrating that the associated increase in young mice and NMN treated mice was approximately 20% compared to 10% in aged control mice (p < 0.05). Additional confirmatory studies conducted by the authors affirmed that the improvement in endothelial function was mitochondrially mediated and were associated with improved functioning of the mitochondria rather than simply increased numbers of mitochondria. With respect to behavior tests which assessed cognitive function, the authors found that NMN supplementation improved learning latency in aging mice, mirroring the results of the young cohort. In addition, NMN supplementation improved novel object recognition testing in the aging cohort as well. <ref>Tarantini S, Valcarcel-Ares MN, Toth P, et al. Nicotinamide mononucleotide (NMN) supplementation rescues cerebromicrovascular endothelial function and neurovascular coupling responses and improves cognitive function in aged mice. ''Redox Biol''. 2019;24.</ref><br />
<br />
<br />
==Article abstract==<br />
Adjustment of cerebral blood flow (CBF) to neuronal activity via neurovascular coupling (NVC) has an essential role in maintenance of healthy cognitive function. In aging increased oxidative stress and cerebromicrovascular endothelial dysfunction impair NVC, contributing to cognitive decline. There is increasing evidence showing that a decrease in NAD<sup>+</sup> availability with age plays a critical role in a range of age-related cellular impairments but its role in impaired NVC responses remains unexplored. The present study was designed to test the hypothesis that restoring NAD<sup>+</sup> concentration may exert beneficial effects on NVC responses in aging. To test this hypothesis 24-month-old C57BL/6 mice were treated with nicotinamide mononucleotide (NMN), a key NAD<sup>+</sup> intermediate, for 2 weeks. NVC was assessed by measuring CBF responses (laser Doppler flowmetry) evoked by contralateral whisker stimulation. We found that NVC responses were significantly impaired in aged mice. NMN supplementation rescued NVC responses by increasing endothelial NO-mediated vasodilation, which was associated with significantly improved spatial working memory and gait coordination. These findings are paralleled by the sirtuin-dependent protective effects of NMN on mitochondrial production of reactive oxygen species and mitochondrial bioenergetics in cultured cerebromicrovascular endothelial cells derived from aged animals. Thus, a decrease in NAD<sup>+</sup> availability contributes to age-related cerebromicrovascular dysfunction, exacerbating cognitive decline. The cerebromicrovascular protective effects of NMN highlight the preventive and therapeutic potential of NAD<sup>+</sup> intermediates as effective interventions in patients at risk for vascular cognitive impairment (VCI).<br />
<br />
==Implications==<br />
Overall, this study adds to the growing body of literature that NMN supplementation appears to result in tangible improvements in mitochondrial functioning on an in vitro basis. This study takes these results further by showing the physiologic results of these improvements via the improvement of neurovascular coupling and cerebral blood flow in NMN-treated aged mice. Additional behavior studies in these mice highlighted the potential cognitive benefits of these previously established in vitro improvements. <br />
<br />
==Additional research to be conducted==<br />
The authors report in their manuscript that future planned directions of study will investigate previously reported relationships between hydrogen sulfide and aging. Specifically, the authors note that since previous studies have highlighted the potentially beneficial role of hydrogen sulfide in reversing vascular aging, they would recommend investigating the interaction between hydrogen sulfide and known NAD<sup>+</sup> metabolic pathways.<br />
<br />
In addition to this topic, which was highlighted within the manuscript, future directions for this research could involve non-invasively measuring the blood flow effects that oral NMN supplementation has in humans. Recent work has highlighted the safety and efficacy of oral NMN supplementation in humans already, and investigations into the potential effects of this supplementation should follow.<ref>Irie J, Inagaki E, Fujita M, et al. Effect of oral administration of nicotinamide mononucleotide on clinical parameters and nicotinamide metabolite levels in healthy Japanese men. ''Endocr J''. 2020;67(2):153-160.</ref><br />
<br />
==Institution==<br />
Dr. Zoltan Ungvari has published extensively on topics ranging including [[Epigentics of aging|aging]] and mitochondrial health and effects that aging has on the vasculature from his lab at the University of Oklahoma. Prior to this article they had published numerous articles investigating the effects of NMN and [[Resveratrol|resveratrol]] on mitochondrial functioning and endothelial health.<ref>Kiss T, Giles CB, Tarantini S, et al. Nicotinamide mononucleotide (NMN) supplementation promotes anti-aging miRNA expression profile in the aorta of aged mice, predicting epigenetic rejuvenation and anti-atherogenic effects. ''GeroScience''. 2019;41(4):419-439.</ref><ref>Kiss T, Nyúl-Tóth Á, Balasubramanian P, et al. Nicotinamide mononucleotide (NMN) supplementation promotes neurovascular rejuvenation in aged mice: transcriptional footprint of SIRT1 activation, mitochondrial protection, anti-inflammatory, and anti-apoptotic effects. ''GeroScience''. February 2020.</ref><ref>Kiss T, Balasubramanian P, Valcarcel-Ares MN, et al. Nicotinamide mononucleotide (NMN) treatment attenuates oxidative stress and rescues angiogenic capacity in aged cerebromicrovascular endothelial cells: a potential mechanism for the prevention of vascular cognitive impairment. ''GeroScience''. 2019;41(5):619-630.</ref><br />
<br />
==Funding==<br />
This study was funded by grants from the American Heart Association, the National Institute on Aging, and the National Institute of Neurologic Disorders and Stroke, among others. The authors report no industry sources of funding and note the funding sources had no input into study design, review, or publication.<br />
<br />
==Authors/ Researchers==<br />
<br />
*Stefano Tarantini – Department of Geriatric Medicine, University of Oklahoma<br />
*Marta Valcarcel-Ares - Department of Geriatric Medicine, University of Oklahoma<br />
*Peter Toth - Department of Geriatric Medicine, University of Oklahoma<br />
*Andriy Yabluchanskiy - Department of Geriatric Medicine, University of Oklahoma<br />
*Zsuzsanna Tucsek - Department of Geriatric Medicine, University of Oklahoma<br />
*Tamas Kiss - Department of Geriatric Medicine, University of Oklahoma<br />
*Peter Hertelendy - Department of Geriatric Medicine, University of Oklahoma<br />
*Michael Kinter – Aging and Metabolism Research Program, Oklahoma Medical Research Foundation<br />
*Praveen Ballabh – Department of Pediatrics, Albert Einstein College of Medicine<br />
*Zoltan Sule – Department of Anatomy, University of Szeged<br />
*Eszter Farkas – Department of Medical Physics, University of Szeged<br />
*Joseph A. Baur – Department of Physiology, University of Pennsylvannia<br />
*[[David Sinclair|David A. Sinclair]] – Department of Genetics, Harvard Medical School<br />
*Anna Csiszar – Department of Public Health, Semmelweis University<br />
*Zoltan Ungvari - Departments of Geriatric Medicine, Health Promotion Sciences, University of Oklahoma; Department of Medical Physics, University of Szeged; Department of Public Health, Semmelweis University<br />
<br />
==References==<br />
<references /><br />
[[Category:Research]]<br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Long-term_administration_of_nicotinamide_mononucleotide_mitigates_age-associated_physiological_decline_in_mice&diff=183Long-term administration of nicotinamide mononucleotide mitigates age-associated physiological decline in mice2020-05-14T20:56:12Z<p>Webadmin: Created page with "'''Long-Term administration of Nicotinamide mononucleotide mitigates age-associated physiological decline in mice''' was an animal study conducted in C57 laboratory mice divid..."</p>
<hr />
<div>'''Long-Term administration of Nicotinamide mononucleotide mitigates age-associated physiological decline in mice''' was an animal study conducted in C57 laboratory mice divided into three groups: controls, 100 mg/kg per day of NMN, and 300 mg/kg per day of NMN. The [[NMN]] was administered orally and the mice were followed longitudinally over 12 months. Initial experiments established that oral administration of NMN resulted in significant increases in plasma NMN and liver [[NAD+]] in minutes. Additionally, using isotopic NMN, the authors further demonstrated that the administered NMN was quickly absorbed into the bloodstream, transported to the liver where it was converted to NAD+ and rapidly transported to peripheral muscle tissue within 30 minutes. The longitudinal follow-up of the mice showed that NMN was associated with a dose-dependent reduction in age-associated weight gain, an average of 4% for the 100 mg/kg and 9% for 300mg/kg, respectively (p < 0.001). Other long-term results highlighted that NMN supplementation appeared to improve insulin sensitivity and lowered triglycerides, fatty acids, and cholesterol. Genetic analysis of the treated animals demonstrated that [[NMN supplemntation|NMN supplementation]] was associated with a reduction in the transcriptional changes that are associated with aging and that these effects appeared to be most prominent in the mitochondria of skeletal muscle.<ref>Mills KF, Yoshida S, Stein LR, et al. Long-Term Administration of Nicotinamide Mononucleotide Mitigates Age-Associated Physiological Decline in Mice. ''Cell Metab''. 2016;24(6):795-806.</ref><br />
<br />
==Article Abstract==<br />
NAD+ availability decreases with age and in certain disease conditions. Nicotinamide mononucleotide (NMN), a key NAD+ intermediate, has been shown to enhance NAD+ biosynthesis and ameliorate various pathologies in mouse disease models. In this study, we conducted a 12-month-long NMN administration to regular chow-fed wild-type C57BL/6N mice during their normal aging. Orally administered NMN was quickly utilized to synthesize NAD+ in tissues. Remarkably, NMN effectively mitigates age-associated physiological decline in mice. Without any obvious toxicity or deleterious effects, NMN suppressed age-associated body weight gain, enhanced energy metabolism, promoted physical activity, improved insulin sensitivity and plasma lipid profile, and ameliorated eye function and other pathophysiologies. Consistent with these phenotypes, NMN prevented age-associated gene expression changes in key metabolic organs and enhanced mitochondrial oxidative metabolism and mitonuclear protein imbalance in skeletal muscle. These effects of NMN highlight the preventive and therapeutic potential of NAD+ intermediates as effective anti-aging interventions in humans.<br />
<br />
==Implications==<br />
There are several significant points highlighted by this manuscript. First, this research establishes that oral administration is a viable route of administration for NMN and underscores that oral NMN supplementation, at least in animals, results in significant plasma increases of NMN and hepatic increases of NAD+. Additionally, this manuscript highlights that long-term NMN administration appears safe and leads to improvements in insulin sensitivity as well as several age-associated conditions such as weight gain and age-associated changes in gene expression. In total, the manuscript highlights that oral administration of NMN is feasible for the purposes of raising plasma levels and affecting several of the previously described in vitro effects of NMN.<br />
<br />
==Additional research==<br />
This study presented convincing evidence that orally administered NMN reliably is imported to the bloodstream where it is transported to the liver and eventual target end-organs. Further research is recommended by the authors to better characterize which end-organs are most impacted by NMN administration, with special attention to potential central nervous system targets. Additionally, further studies evaluating the optimal dose of NMN to better understand the potential range of doses which should be considered for human administration.<br />
<br />
==Institution==<br />
[[Shin-ichiro Imai|Dr. Shin-ichiro Imai]], the principal investigator for this study, has been an active researcher in the area of NMN. His lab at [[Washington University]] in St. Louis has produced several other manuscripts investigating the role of [[sirtuins]] in longevity and insulin sensitivity as well as the metabolism of NAD<sup>+</sup>.<ref>Moynihan KA, Grimm AA, Plueger MM, et al. Increased dosage of mammalian Sir2 in pancreatic β cells enhances glucose-stimulated insulin secretion in mice. ''Cell Metab''. 2005;2(2):105-117.</ref><ref>Luo J, Nikolaev AY, Imai S ichiro, et al. Negative control of p53 by Sir2α promotes cell survival under stress. ''Cell''. 2001;107(2):137-148.</ref><ref>Revollo JR, Grimm AA, Imai SI. The NAD biosynthesis pathway mediated by nicotinamide phosphoribosyltransferase regulates Sir2 activity in mammalian cells. ''J Biol Chem''. 2004;279(49):50754-50763.</ref><br />
<br />
==Funding==<br />
This study was funded under a sponsored research collaboration between Washington University in St. Louis and [[Oriental Yeast Company]], a manufacturer of NMN.<br />
<br />
==Authors/Researchers==<br />
<br />
*Kathryn F. Mills – Department of Developmental Biology, Washington University<br />
*Shoehi Yoshida – Oriental Yeast Company<br />
*Liana R. Stein - Department of Developmental Biology, Washington University<br />
*Alessia Grozio - Department of Developmental Biology, Washington University<br />
*Shunsuke Kubota – Department of Ophthalmology, Washington University<br />
*Yo Sasaki – Department of Genetics, Washington University<br />
*Philip Redpath – School of Pharmacy, Queen’s University of Belfast<br />
*Marie E. Migaud - School of Pharmacy, Queen’s University of Belfast<br />
*Rajendra S. Apte - Department of Developmental Biology, Washington University<br />
*Koji Uchida - Oriental Yeast Company<br />
*Jun Yoshino – Division of Geriatrics and Nutritional Science, Washington University<br />
*Shin-ichiro Imai - Department of Developmental Biology, Washington University<br />
<br />
<br />
==References==<br />
<br />
[[Category:Research]]<br />
<references /><br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=NMN_research&diff=182NMN research2020-05-14T20:55:58Z<p>Webadmin: Created page with "* Long-term administration of nicotinamide mononucleotide mitigates age-associated physiological decline in mice * Effect of oral administration of nicotinamide mononucl..."</p>
<hr />
<div>* [[Long-term administration of nicotinamide mononucleotide mitigates age-associated physiological decline in mice]]<br />
* [[Effect of oral administration of nicotinamide mononucleotide on clinical parameters and nicotinamide metabolite levels in healthy Japanese men]]<br />
* [[Nicotinamide mononucleotide (NMN) supplementation rescues cerebromicrovascular endothelial function and neurovascular coupling responses and improves cognitive function in aged mice]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Category:Health&diff=181Category:Health2020-05-14T20:55:32Z<p>Webadmin: Created blank page</p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=NMN_in_food_sources&diff=180NMN in food sources2020-05-14T20:55:18Z<p>Webadmin: Created page with "Category:Health"</p>
<hr />
<div>[[Category:Health]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Health&diff=179Health2020-05-14T20:55:03Z<p>Webadmin: Created page with "* NAD+ * Sirtuins * NMN in food sources"</p>
<hr />
<div>* [[NAD+]]<br />
* [[Sirtuins]]<br />
* [[NMN in food sources]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Conrad_Elvehjem&diff=178Conrad Elvehjem2020-05-14T20:54:19Z<p>Webadmin: Created page with "'''Conrad Arnold Elvehjem''' (May 27, 1901 to July 27, 1962)<ref name="life">[https://www.ncbi.nlm.nih.gov/pubmed/11616156 Conrad Arnold Elvehjem: May 27, 1901-July 27, 1962.]..."</p>
<hr />
<div>'''Conrad Arnold Elvehjem''' (May 27, 1901 to July 27, 1962)<ref name="life">[https://www.ncbi.nlm.nih.gov/pubmed/11616156 Conrad Arnold Elvehjem: May 27, 1901-July 27, 1962.] Written for the US National Library of Medicine & National Institutes of Health. Published January 1, 2020; Accessed April 6, 2020</ref> was a biochemical researcher who worked at the University of Wisconsin. He worked for years on the emerging field of vitamins, and with his university colleagues discovered in 1937 that niacin, or [[Vitamin B3|Vitamin B<sub>3</sub>]], was able to prevent and cure the disease pellagra. <ref name="vitamin">[https://www.pbs.org/wgbh/aso/databank/entries/dm15pa.html Pellagra shown to be dietary disease] Written for PBS. Published January 1, 1998; Accessed April 6, 2020</ref><ref name="nature">[https://www.nature.com/articles/468S16a History: The changing notion of food] Written by Ned Stafford for Nature. Published December 22, 2010; Accessed April 6, 2020</ref> This discovery led to the elimination of pellagra in the United States, which at the time caused thousands of deaths per year. Elvehjem became known as a leading expert in vitamins and health, and later also became President of the University of Wisconsin. His legacy continues in the study of metabolism and how cells produce energy.<br />
<br />
==Research==<br />
Elvehjem joined the faculty of the University of Wisconsin in 1930 in the biochemistry department and worked primarily on Vitamin B complex’s trace minerals and components.<ref name="components">[https://www.annualreviews.org/doi/full/10.1146/annurev.nutr.012809.104633 Nutritional Scientist or Biochemist?] Written by J.W. Suttie for the Annual Review of Nutrition, Volume 31. Published August 1, 2011; Accessed April 6, 2020</ref><ref name="biome">[https://www.nytimes.com/1942/02/04/archives/stresses-reliance-on-natural-foods-elvehjemwho-identified-niacin-as.html STRESSES RELIANCE ON NATURAL FOODS; Elvehjem,Who Identified Niacin as Pellagra Cure, Says They Contain Essential Factors] Written for the New York Times. Published February 4, 1942; Accessed April 7, 2020</ref> Elvehjem and his colleagues received praise for their work on trace elements. They also won recognition for work on the role of copper in the formation of hemoglobin in the human body.<ref name="acknowledged">[https://www.nature.com/articles/151471c0 Prof. C. A. Elvehjem] Written for Nature Magazine, Volume 151. Published April 24, 1943; Accessed April 7, 2020</ref> His later work also exposed the role of metals in nutrition like iron, aluminum, and manganese. <ref name="acknowledged" /><br />
<br />
===Pellagra===<br />
Joseph Goldberger, a doctor who spent decades fighting infectious diseases, was appointed by the United States government in 1914 to work on stopping the scourge of the disease known as pellagra.<ref name="source" /> Through his work, he identified that diet was the cause of the condition but struggled to identify what was missing from sufferers' diets and died in 1927, having not yet found the source.<ref name="source">[https://www.pbs.org/wgbh/aso/databank/entries/bmgold.html Joseph Goldberger 1874 - 1929] Written for PBS. Published January 1, 1998; Accessed April 7, 2020</ref><br />
<br />
Elvehjem and his colleagues built on Goldbergers' work, and in the mid-1930s experimented by putting first chicken and then dogs on a diet consisting of all known Vitamin B foods.<ref name="letter" /> This diet, developed initially by Goldberger, included yellow corn, casing, and cottonseed oil.<ref name="letter" /> The animals quickly developed pellagra, experiencing typical symptoms such as black tongue and lethargy, and were soon near death. However, the animals' health completely recovered once they received small-molecule fractions derived from liver.<ref name="chickens">[https://www.cabdirect.org/cabdirect/abstract/19372701784 Further Studies on the Concentration of the Anti-pellagra Factor.] Written by C Koehn Jr. and C A Elvehjem for the Journal of Biological Chemistry. Published 1937, Volume 118, Pages 693-699; Accessed April 9, 2020</ref> Dogs treated with the distillation of liver did not experience recurrence of black tongue, had increased energy, and no longer experienced diarrhea.<ref name="ruff">[https://pubs.acs.org/doi/pdf/10.1021/ja01288a509 Relation of Nicotinic Acid and Nicotinic Acid Amide to Canine Black Tongue] Written by C A Elvehjem, R J Madden, F M Strong, and D W Woolley for the Journal of the American Chemical Society. Published September 1, 1937, Volume 59, Issue 9, Page 1767-1768</ref> <br />
<br />
It was now without a doubt that diets that did not include nicotinic acid and nicotinamide caused pellagra.<ref name="eureka">[https://www.cell.com/fulltext/S0092-8674(04)00416-7 Discoveries of Nicotinamide Riboside as a Nutrient and Conserved NRK Genes Establish a Preiss-Handler Independent Route to NAD+ in Fungi and Humans] Written by Pawel Bieganowski and Charles Brenner for Cell, Volume 117, Issue 4. Published May 14, 2004; Accessed April 7, 2020</ref> Testing on humans found a minimal amount of side effects, and after publication, physicians began curing pellagra with liver extract.<ref name="letter" /> Further studies by the University of Wisconsin showed a corn-based diet that many Americans then consumed would cause pellagra due to lack of niacin.<ref name="letter" /> Years later, scientists built on Elvehjam's work, discovering that niacin is a vitamin form of NAD+. <ref name="eureka" /> They also found that eukaryotes synthesize NAD+ "de novo," and tryptophan uses the kynurenine pathway. Therefore a tryptophan-poor diet can cause pellagra, and niacin can cure it. <ref name="eureka" /><br />
<br />
===Publication===<br />
Elvehjem and colleagues submitted a letter to the editor for the September 1937 issues of the Journal of the American Chemical Society announcing their discovery of pellagra’s source.<ref name="letter">[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6413980/ Facts and ideas from anywhere] Written by William C. Roberts for the US National Library of Medicine & National Institutes of Health. Published November 5, 2018; Accessed April 6, 2020</ref> By 1942, he was a leading authority in the area of nutrition, and counseled people to eat a variety of natural foods to avoid missing out on vitamins, many of which at the time were still unknown.<ref name="biome" /> In 1943, Elvehjem won the Willard Gibbs Medal for his contributions to chemistry.<ref name="betterliving">[https://www.nytimes.com/1943/03/14/archives/wins-chemistry-award-dr-conrad-a-elvehjem-to-get-1943-willard-gibbs.html WINS CHEMISTRY AWARD; Dr. Conrad A. Elvehjem to Get 1943 Willard Gibbs Medal] Written for The New York Times. Published March 14, 1943; Accessed April 6, 2020</ref><br />
<br />
===Later life===<br />
Elvehjem became involved in the administrative work on the University of Wisconsin’s Madison campus, as well as National Nutrition policy. <ref name="components" /> He became the chair of the Department of Biochemistry in 1944 and became the Dean of the Graduate School as well. <ref name="components" /> Elvehjem later became the President of the University of Wisconsin in 1958, but retained his office in the Biochemistry Department.<ref name="president">[https://www.nytimes.com/1962/07/28/archives/ca-elvehjem-61-biochemist-dead-president-of-u-of-wisconsin-since-58.html C.A. ELVEHJEM, 61 BIOCHEMIST, DEAD; President of U. of Wisconsin Since '58 Identified Niacin] Written for the New York Times. Published July 28, 1962, Page 14; Accessed April 7, 2020</ref> He continued to work on amino acid imbalance and metabolism. <ref name="components" /><br />
<br />
==Legacy==<br />
Elvehjem left a significant legacy, and many institutions, as well as prizes, bear his name, such as the Elvehjem Award of the American Institute of Nutrition.<ref name="awardz">[https://www.ncbi.nlm.nih.gov/books/NBK236481/ ECommittee and Staff Biographies] Written for the US National Library of Medicine & National Institutes of Health. Published January 1, 1993; Accessed April 7, 2020</ref> Elvehjem's research has led to continued breakthroughs in how the compound NAD+ operates, is produced, and what role it plays in determining the lifespan of living things. <ref name="eureka" /><br />
<br />
==References==<br />
<references /><br />
<br />
[[Category:Key Figures]]<br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=William_John_Young&diff=177William John Young2020-05-14T20:54:04Z<p>Webadmin: Created page with "'''William John Young''' (January 26, 1878- May 14, 1942) was a biochemist who studied the fermentation of yeast and carbohydrate metabolism.<ref name="obituary">[https://www...."</p>
<hr />
<div>'''William John Young''' (January 26, 1878- May 14, 1942) was a biochemist who studied the fermentation of yeast and carbohydrate metabolism.<ref name="obituary">[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1257871/?page=1 Obituary: William John Young] Written for Biochemistry Journal, Accessed from United States National Library of Medicine & the National Institutes of Health. Published July 1943, Volume 37; Accessed April 9, 2020</ref> After attending Victoria University, Young began a long research collaboration with fellow chemist Arthur Harden, and together they are credited with discovering the compound [[NAD+|Nicotinamide adenine dinucleotide (NAD<sup>+</sup>)]]. After a decade of work with Harden on fermentation and metabolism, Young moved to Australia, and there became the chair of biochemistry at the Institute of Tropical Medicine. Young's research has been built upon ever since, especially in areas of carbohydrate metabolism, NAD<sup>+</sup>, and how cells use energy.<br />
<br />
==Early life and work==<br />
Born in Manchester within the United Kingdom, William John Young was educated at Owens College, specializing in chemistry.<ref name="obituary" /> He then attended Victoria University, where he received a Masters of Science Degree.<ref name="obituary" /> Young's colleagues knew him for his enthusiasm and broad interests, which included English literature, drama, cabinet making, and golf.<ref name="obituary" /><br />
<br />
==Research work with Arthur Harden==<br />
In 1901, Young obtained a position working as an assistant of fellow British chemist Arthur Harden of the Jenner Institute.<ref name="obituary" /> Young then worked with Harden for over a decade, mostly on yeast fermentation.<ref name="hardly">[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1265611/?page=4 Arthur Harden] Written by Ida Smedley-Maclean for the Biochemical Journal, Volume 35, Issues 10-11, Pages 1071-1081. Written November 1, 1941; Accessed April 13, 2020</ref> They studied yeast glycogen and where and under what conditions “yeast juice” would lose or redouble its fermentation ability.<ref name="hardly" /> While others often solely studied the effects of experiments, Arthur and Young studied every part, such as the amount of CO<sub>2</sub> and the rate of reaction throughout the process.<ref name="hardly" /><br />
<br />
Together they discovered nicotinamide adenine dinucleotide (NAD<sup>+</sup>) in 1906.<ref name="big">[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5599801/ Modulating NAD<sup>+</sup> metabolism, from bench to bedside] Written by Elena Katsyuba and Johan Auwerx for The Embo Journal, Volume 36, Issue 18. Published September 15, 2017; Accessed April 13, 2020</ref> In a significant breakthrough, Young and Harden were able to show that a “glucose phosphate ester accumulated during fermentation ‘in vitro’.”<ref name="zymase">[https://www.jstor.org/stable/44451361?seq=1 THE BACKGROUND TO ARTHUR HARDEN'S DISCOVERY OF COZYMASE] Written by Robert E. Koehler Jr. for Bulletin of the History of Medicine, Volume 48, Number 1. Published Spring 1974; Accessed April 22, 2020</ref> Some attempted to argue the finding, but the work of Harden and Young was not able to be discredited.<ref name="zymase" /> [4] This heat-stable “co-factor” was found by adding boiled yeast extract to non-boiled extracts. This new chemical significantly amplified the alcoholic fermentation process, implying that something new was in the boiled mixture.<ref name="big" /> This discovery was called a “cozymase”<ref name="big" /> From 1906-1911, Young and Harden contributed six papers to the journal “The Proceedings of the Royal Society” about yeast fermentation and carbohydrate metabolism.<ref name="obituary" /><ref name="hardly" /> In 1907, Young isolated barium salt, and the two researchers further studied “co-fermentation,” and the interactions of the phosphate radical and a then yet unknown structure that moved the radical to a sugar molecule. <ref name="obituary" /><br />
<br />
==Later life and career==<br />
The duo’s partnership ended in 1912 when Young moved to Australia to work in a Lectureship at the Institute of Tropical Medicine.<ref name="hardly" /> He also took the time to study changes in metabolism from living in the tropics. Young wrote most of his papers between 1915 and 1920 for the “Annals of Tropical Medicine and Parasitology” and the “Medical Journal of Australia.<ref name="obituary" /> Upon its creation, Young took the newly created Chair of Biochemistry at the Institute.<ref name="hardly" /> Young spent much of his time teaching, and his subject matter varied widely: he also performed research for the Australian government into the preservation of bananas.<ref name="hardly" /> Young died within two years of his long time colleague Arthur Harden.<ref name="obituary" /><br />
<br />
==References==<br />
<references /><br />
<br />
[[Category:Key Figures]]<br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Arthur_Harden&diff=176Arthur Harden2020-05-14T20:53:45Z<p>Webadmin: Created page with "'''Arthur Harden''' (October 12, 1865, to June 17, 1940) was a British biochemist who made significant progress in the study of glycolysis and fermentation. Born in Manchester..."</p>
<hr />
<div>'''Arthur Harden''' (October 12, 1865, to June 17, 1940) was a British biochemist who made significant progress in the study of glycolysis and fermentation. Born in Manchester, Harden attended Victoria University and, after almost a decade of teaching, began to research yeast fermentation. With colleague William John Young, the researchers discovered the compound[[NAD+|Nicotinamide adenine dinucleotide (NAD<sup>+</sup>)]] in 1906. <br />
<br />
For this and his later work on sugar, yeast, and enzymes, he was awarded the 1929 Nobel Prize in chemistry along with Hans von Euler. Harden received many other prizes for his work and continued to research this subject for the rest of his life. <ref name="bio">[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1265611/?page=2 Arthur Harden] Written for the Biochemical Journal. Published November 1941, Volume 35; Accessed April 6, 2020</ref><ref name="biology">[https://www.nature.com/articles/146122a0 Sir Arthur Harden, F.R.S] Written by J.C.G. Ledingham for Nature, Volume 146, Issue 122. Published July 1, 1940; Accessed April 13, 2020</ref> <ref name="humbug" /><br />
<br />
==Early life and interests==<br />
Brought up with his sisters in Manchester, England, Arthur Harden had parents who were “austere non-conformists,” not going to plays at the theatre or celebrating Christmas.<ref name="humbug">[https://www.jstor.org/stable/769143?seq=1 Arthur Harden. 1865-1940] Written by F. G. Hopkins and C. J. for the Royal Society, Volume 4, Number 11, Pages 2-14. Published November 1, 1942; Accessed April 13, 2020</ref> Harden attended Tettenhall College in Staffordshire until the age of sixteen. He went on to Victoria University, where he achieved “first-class” honors in chemistry.<ref name="humbug" /> The following year, 1886, he received the Dalton Scholarship.<ref name="humbug" /><br />
<br />
Harden loved to travel, visiting Greece and South Africa, as well as being an excellent skater, golfer, and later gardener.<ref name="bio" /> He was known as a man of middling temper, well-liked by both colleagues and students, and was married in 1907 to Georgina Sydney.<ref name="bio" /><br />
<br />
==Career==<br />
===Teaching===<br />
Until the tutelage of his teacher J.B. Cohen, Harden produced his first paper on silicon tetrachloride, published in 1886 for the journal “Transactions of the Chemical Society.”<ref name="humbug" /> After obtaining his Ph.D., Harden became a senior demonstrator and lecturer in Manchester, doing research and teaching the history of chemistry to honors students.<ref name="humbug" /> Working with a colleague, he also wrote a paper and a book on the diffusion of gases and even helped write textbooks on chemistry.<ref name="humbug" /> <br />
<br />
===Early research===<br />
In 1897, after nine years lecturing and demonstrating at Manchester, Harden joined the British Institute of Preventative Medicine at the suggestion of his long time colleague Sir Henry Roscoe.<ref name="bio" /> A year later, the institute changed its name to the Jenner Institue of Preventative Medicine.<ref name="bio" /> One of Harden’s new colleagues, Doctor Allan Macfadyen, encouraged him to study the bacterial fermentation of sugars.<ref name="bio" /><br />
<br />
===NAD<sup>+</sup>===<br />
Eduard Buchner’s momentous discovery in 1897 of cell-free fermentation opened up a whole new area of study for biochemists, and much work began exploring yeast fermentation.<ref name="bio" /> Harden was one such chemist, and published a book on alcoholic fermentation and wrote papers on vitamins.<ref name="noble" /> In 1901, William John Young, a fellow British chemist, became Hardens’ assistant.<ref name="obituary" /> Harden and Young thus began a decade long collaboration, mostly on yeast fermentation.<ref name="hardly">[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1265611/?page=4 Arthur Harden] Written by Ida Smedley-Maclean for the Biochemical Journal, Volume 35, Issues 10-11, Pages 1071-1081. Written November 1, 1941; Accessed April 13, 2020</ref> Two years later, the Jenner Institute, where they worked, changed its name again, this time to the Lister Institute.<ref name="bio" /> Harden and Young studied yeast glycogen and where and under what conditions “yeast juice” would lose or redouble its fermentation ability. <ref name="hardly" /> While others often solely studied the effects of experiments, Arthur and Young studied every part, such as the amount of CO2 and the rate of reaction throughout the process.<ref name="hardly" /><br />
<br />
In 1906, the duo made a significant discovery when they uncovered a compound they named Nicotinamide adenine dinucleotide (NAD<sup>+</sup>).<ref name="big">[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5599801/ Modulating NAD<sup>+</sup> metabolism, from bench to bedside] Written by Elena Katsyuba and Johan Auwerx for The Embo Journal, Volume 36, Issue 18. Published September 15, 2017; Accessed April 13, 2020</ref> This “co-factor” was found by adding boiled yeast extract to non-boiled extracts, which significantly amplified the alcoholic fermentation process.<ref name="big" /> This effect implied that something new was in the boiled mixture; this; this was called a “cozymase.”<ref name="big" /> Harden found that this biotic factor, along with phosphate, were responsible for creating zymase.<ref name="zymase" /> The revelation that at least three compounds were involved in the creation of zymase, and that it was not an uncomplicated enzyme, was a significant discovery.<ref name="zymase" /> Some attempted to argue the finding, but the work of Harden and Young was not able to be discredited.<ref name="zymase">[https://www.jstor.org/stable/44451361?seq=1 THE BACKGROUND TO ARTHUR HARDEN'S DISCOVERY OF COZYMASE] Written by Robert E. Koehler Jr. for Bulletin of the History of Medicine, Volume 48, Number 1. Published Spring 1974; Accessed April 22, 2020</ref><br />
<br />
From 1906-1911, Young and Harden contributed six papers to the journal “The Proceedings of the Royal Society” about yeast fermentation and carbohydrate metabolism.<ref name="obituary" /><ref name="hardly" /> In 1907, the two researchers further studied “co-fermentation,” and the interactions of the phosphate radical and a then yet unknown structure that moved the radical to a sugar molecule.<ref name="obituary">[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1257871/?page=1 Obituary: William John Young] Written for Biochemistry Journal, Accessed from United States National Library of Medicine & the National Institutes of Health. Published July 1943, Volume 37; Accessed April 9, 2020</ref> The duo’s partnership ended in 1912 when Young moved to Australia to work in a Lectureship at the Institute of Tropical Medicine.<ref name="hardly" /><br />
<br />
While Harden was working on his research, his professional career was not standing still. Harden became head of the Biochemistry Department at the Lister Institute in 1907, and in 1909 Harden was elected to the Fellowship of the Royal Society.<ref name="noble" /><ref name="obituary" /> Harden was also involved in the founding of the Biochemical Society in 1911, later called the Biochemical Journal in 1912, and was its editor for twenty-five years.<ref name="bio" /><ref name="conference" /> Harden also became a professor of biochemistry at the University of London in 1912.<ref name="noble" /><br />
<br />
===Later works===<br />
In 1914, Harden began working with a new partner, Robert Robinson, and research on fermentation continued.<ref name="bio" /> When World War I started, the Director of the Lister Institute left, and Harden became Deputy-Director.<ref name="bio" /> In 1917, Harden and colleague Zilva established that vitamin deficiency caused scurvy, not an “unwholesome diet.”<ref name="bio" /> Harden also helped with the Accessory Food Factors Committee created by the Medical Research Committee.<ref name="bio" /> Harden continued his work on understanding the process of glycolysis, as well as its co-factors and intermediates.<ref name="noble" /> He also advanced the work on cell-free fermentation originally started by Eduard Buchner.<ref name="noble" /><br />
<br />
==Later life, awards, and legacy==<br />
In 1929, he and his colleague Hans von Euler won the Nobel Prize for Chemistry for their work on yeast, sugars, and enzymes over many years.<ref name="noble">[https://science.sciencemag.org/content/70/1821/x.1 THE NOBEL PRIZE MEN] Written for Science, Volume 70, Issue 1821. Published November 22, 1929; Accessed April 13, 2020</ref> Harden presented a lecture on the topic of phosphates and their role in alcoholic fermentation to the Nobel Prize committee on the day of his award on December 12, 1929.<ref name="reward">[https://www.nature.com/articles/125277a0 The Function of Phosphate in Alcoholic Fermentation] Written by Arthur Harden for Nature, Volume 125, Pages 277-279. Published January 1, 1930; Accessed April 13, 2020</ref> Harden retired in 1930.<ref name="biology" /> He received further awards for his work, including the Davy Medal of the Royal Society in 1935, and a knighthood from the United Kingdom in 1936.<ref name="bio" /> The Institute of Brewing made him an honorary member, and he received several honorary degrees.<ref name="bio" /><br />
<br />
For years he continued to teach and write articles and was the editor of the Committee of the Biochemical Society.<ref name="bio" /> In 1938 he was presented a silver salver by the Biochemical Journal for his long years of work and contribution.<ref name="bio" /> Until a year or two before he died, Harden came to the lab every day, still working on experiments.<ref name="bio" /><br />
<br />
His role and memory continue to be honored by annual Harden conferences, and his work eventually led to further discoveries about the role of NAD<sup>+</sup>, a compound critical to the function of living cells. <ref name="fraction">[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3471225/ Exploring the therapeutic space around NAD<sup>+</sup>] Written by Riekelt H. Houtkooper and Johan Auwerx for the Journal of Cellular Biology, Volume 199, Issue 2, Pages 205-209. Published October 15, 2012; Accessed April 13, 2020</ref><ref name="conference">[https://www.cell.com/trends/biochemical-sciences/fulltext/S0968-0004(99)01528-5 Arthur Harden: an unwitting pioneer of metabolic control analysis] Written by Keith L. Manchester for Trends in Biochemical Sciences, Volume 25, Issue 2, Pages 89-92. Published February 1, 2000; Accessed April 13, 2020</ref><br />
<br />
==References==<br />
<references /><br />
<br />
[[Category:Key Figures]]<br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Dietary_sources_of_NMN&diff=175Dietary sources of NMN2020-05-14T20:53:09Z<p>Webadmin: Created page with " NMN occurs naturally in some foods. Dietary sources include fruits, vegetables, and milk. <ref>3. Lindsay E. Wu, David A. Sinclair. The elusive NMN transporter is found. Na..."</p>
<hr />
<div><br />
NMN occurs naturally in some foods. Dietary sources include fruits, vegetables, and milk. <ref>3. Lindsay E. Wu, David A. Sinclair. The elusive NMN transporter is found. Nature Metabolism, 2019; DOI: https://doi.org/10.1038/s42255-018-0015-6.</ref><br />
<br />
==List of NMN in natural foods==<br />
<br />
Specific dietary sources of NMN include vegetables like edamame (immature soybeans), broccoli, cucumber, and cabbage. These vegetables have 0.25-1.88 mg of NMN per 100g.2 Fruits containing NMN include avocados and tomatoes with 0.26-1.60 mg/100 g. Meats contain low levels of NMN with raw beef and shrimp having 0.06-0.42 mg/100g. Human red blood cells contain ~50mg of NMN total.<ref>Kathryn F. Mills, Shohei Yoshida, Liana R. Stein, Alessia Grozio, Shunsuke Kubota, Yo Sasaki, Philip Redpath, Marie E. Migaud, Rajendra S. Apte, Koji Uchida, Jun Yoshino, Shin-ichiro Imai. Long-term administration of nicotinamide mononucleotide mitigates age-associated physiological decline in mice. Cell Metab, 2016; DOI: 10.1016/j.cmet.2016.09.013.</ref> Thus, an individual would need to consume quite a bit of NMN-containing food to get physiologically relevant amounts of NMN.<br />
<br />
{| class="wikitable sortable"<br />
|-<br />
!Source!!mg/100g-Food<br />
|-<br />
|Edamame||1.18<br />
|-<br />
|Broccoli||0.69<br />
|-<br />
|Cucumber seed||0.56<br />
|-<br />
|Cucumber peel||0.65<br />
|-<br />
|Cabbage||0.90<br />
|-<br />
|Avocado||0.98<br />
|-<br />
|Tomato||0.28<br />
|-<br />
|Mushroom||0.51<br />
|-<br />
|Beef (raw)||0.24<br />
|-<br />
|Shrimp||0.22<br />
|}<br />
<br />
<br />
==Consumption of NMN==<br />
It remains unclear whether consuming NMN through food sources can meaningfully influence NAD+ levels.3 The majority of NMN food sources contain less than one milligram per kilogram of food.<ref>Kathryn F. Mills, Shohei Yoshida, Liana R. Stein, Alessia Grozio, Shunsuke Kubota, Yo Sasaki, Philip Redpath, Marie E. Migaud, Rajendra S. Apte, Koji Uchida, Jun Yoshino, Shin-ichiro Imai. Long-term administration of nicotinamide mononucleotide mitigates age-associated physiological decline in mice. Cell Metab, 2016; DOI: 10.1016/j.cmet.2016.09.013.</ref> At the same time, hundreds of milligrams of NMN per dose are required to raise NAD+ in humans<br />
<br />
==NMN Supplementation==<br />
A possible method to obtain sufficient NMN for raising NAD+ levels in the body is oral supplementation. Clinical studies supplementing NMN in humans are underway. They will help determine whether NMN confers the same benefits in humans as in animals such as mice. Regarding safety of NMN, an NMN clinical trial finds supplementation with up to 500 mg safe in healthy men<br />
<br />
NMN supplementation raises levels of NAD+ and protects against age-related diseases in animals. Scientists have used mice primarily for these studies. In these animals, raising NAD+ levels with NMN supplementation protects against the animal models of age-related diseases, including Alzheimer’s disease, liver disease, heart disease, bone impairments, and muscle impairments. Moreover, a study reveals anti-aging effects, along with improved metabolism and energy reserves in mice supplemented with NMN through their water.<ref>Kathryn F. Mills, Shohei Yoshida, Liana R. Stein, Alessia Grozio, Shunsuke Kubota, Yo Sasaki, Philip Redpath, Marie E. Migaud, Rajendra S. Apte, Koji Uchida, Jun Yoshino, Shin-ichiro Imai. Long-term administration of nicotinamide mononucleotide mitigates age-associated physiological decline in mice. Cell Metab, 2016; DOI: 10.1016/j.cmet.2016.09.013.</ref><br />
<br />
==References==<br />
<references /><br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Vitamin_B3&diff=174Vitamin B32020-05-14T20:52:27Z<p>Webadmin: Created page with "'''Vitamin B<sub>3</sub>''' is used by cells to make the essential cofactor, nicotinamide adenine dinucleotide (NAD<sup>+</sup>). All forms of life use NAD<sup>+</sup..."</p>
<hr />
<div>'''Vitamin B<sub>3</sub>''' is used by cells to make the essential cofactor, [[NAD+|nicotinamide adenine dinucleotide (NAD<sup>+</sup>)]]. All forms of life use NAD<sup>+</sup> in reactions in cells to make energy. All lifeforms require NAD<sup>+</sup> to sustain life. <ref name=":0">Mikhail V Makarov, Samuel AJ Trammell, Marie E Migaud. '''The chemistry of the vitamin B3 metabolome'''. ''Biochem Soc Trans'', 2018; DOI: 10.1042/BST20180420.</ref><br />
<br />
Supplementation with vitamin B<sub>3</sub> has become a valuable nutritional and therapeutic strategy. Suboptimal levels of vitamin B<sub>3</sub> yield cellular dysfunction. Short-term vitamin B<sub>3</sub> deficiency leads to pellagra.<ref name=":0" /><ref>LJ Hill, AC Williams. '''Meat intake and the dose of vitamin B3—nicotinamide: cause of the causes of disease transitions, health divides, and health futures?''' ''Int J Tryptophan'', 2017; DOI: 10.1177/11778646917704662.</ref><ref>S Srivastava. '''Emerging therapeutic roles for NAD(+) metabolism in mitochondrial and age-related disorders'''. ''Clin Transl Med'', 2016; DOI: 10.1186/s40169-016-0104-7.</ref> Pellagra is a deadly and debilitating disease, occurring in regions in the world with severe malnutrition. In developed regions of the world, vitamin B<sub>3</sub> deficiency occurs due to poor dietary choices, alcoholism, and infectious or autoimmune diseases.<ref>MA Crook. '''The importance of recognizing pellagra (niacin deficiency) as it still occurs'''. ''Nutrition'', 2014; DOI: 10.1016/j.nut.2014.03.004.</ref><ref>A Garrido, N Djouder. '''NAD+ deficits in age-related diseases and cancer'''. ''Trends Cancer'', 2017; DOI: 10.1016/j.trecan.2017.06.001.</ref><ref>R Li, K Yu, Q Wang, L Wang, J Mao, J Qian. '''Pellagra secondary to medication and alcoholism: a case report and review of the literature'''. ''Nt Clin Pract'', 2016; DOI: 10.1177/0884533616660991.</ref><ref name=":0" /><ref>N Terada, K Kinoshita, S Taguchi, Y Tokuda. '''Wernicke encephalopathy and pellagra in an alcoholic and malnourished patient'''. ''BMJ Case Rep'', 2015; DOI: 10.1136/bcr-2015-209412.</ref> Some symptoms of vitamin B<sub>3</sub> deficiency include diarrhea, skin irritation, depression, fatigue, and headache.<br />
<br />
Protection against pellagra comes from consumption of B<sub>3</sub> vitamin sources. In 1915, American doctor, Joseph Goldberger, discovered pellagra results from malnutrition. Goldberger found pellagra could be prevented with diets containing B<sub>3</sub> vitamins in yeast, eggs, peanuts, meat, and cereals.<br />
<br />
==Forms Vitamin B3==<br />
Niacin (NA) and nicotinamide (NAM) are B<sub>3</sub> vitamins which the body can use to synthesize NAD<sup>+</sup>. The body can also use the protein building block, the amino acid tryptophan, to synthesize NAD<sup>+</sup>. Other B<sub>3</sub> vitamins include the supplements, [[NMN|nicotinamide mononucleotide (NMN)]] and nicotinamide riboside (NR).<ref>Antony A Sauve. '''NAD+ and vitamin B<sub>3</sub>: From metabolism to therapies'''. ''J Pharmacol Exp Ther'', 2008; DOI: 10.1124/jpet.107.120758.</ref><br />
<br />
==Vitamin B3 intake==<br />
In the United States, the recommended intake of niacin is 14 mg per day in adult women and 16 mg per day in adult men.<ref>Institute of Medicine (1998). "Niacin". Dietary Reference Intakes for Thiamin, Riboflavin, Niacin, Vitamin B6, Folate, Vitamin B12, Pantothenic Acid, Biotin, and Choline. Washington, DC: The National Academies Press. pp. 123–149. <nowiki>ISBN 978-0-309-06554-2</nowiki>. Retrieved 7 April 2020.</ref> Consuming higher doses of B<sub>3</sub> vitamins can have protective effects in some diseases. <br />
<br />
===Beneficial effects of Vitamin B<sub>3</sub>===<br />
In diabetes, a high dose of nicotinamide (25-50 mg per kg) has been shown to protect pancreas cells. A high dose of nicotinamide has also been shown to provide protection to neurons in fetal alcohol syndrome. In patients with high cholesterol, high doses of nacin were shown to reduce fats in the blood, reduce numbers of death, and to reduce numbers of heart complications.<ref>Niaspan® (niacin extended-release) tablets prescribing information. AbbVie Inc., US-NIAS-180036, North Chicago, IL 60064 December 2018.</ref><br />
<br />
===Adverse effects of vitamins B<sub>3</sub>===<br />
The most common symptoms from consuming low doses (50-500 mg) of niacin are flushing (itching, warmth, or tingling), abdominal pain, headache, diarrhea, indigestion, nausea, vomiting, and rash. These effects can be avoided with using lower dosages and increasing the dosage gradually. These adverse effects can also be avoided if niacin is not taken on an empty stomach.<ref name=":1">"Niacin Fact Sheet for Health Professionals". 15 January 2019. Retrieved 7 April 2020.</ref><br />
<br />
High-dose niacin therapy (1-3 grams per day) is used to treat low blood pressure, fatigue, insulin resistance, heartburn, and blurred or impaired vision. Side effects of long-term, high dosage use include liver dysfunction, hepatitis, and liver failure.9 Taking niacin at high doses long-term also increases the risk of brain stroke and hemorrhage, ulcers and bleeding, diabetes, indigestion, and diarrhea.<ref name=":1" /><br />
<br />
==Food sources of vitamin B3==<br />
Vitamin B<sub>3</sub> can be found in food sources in the forms of both niacin and nicotinamide.<ref>“Niacin.” lpi.oregonstate.edu/mic/vitamins/niacin. Retrieved 7 April 2020.</ref><br />
<br />
===Food sources of nicotinamide===<br />
Meat, fish, nuts, and mushrooms contain nicotinamide in trace amounts. An even lesser amount of nicotinamide is available in some vegetables. B3 vitamin supplements also contain 20-30mg of nicotinamide.<br />
<br />
===Food sources of niacin===<br />
{| class="wikitable sortable"<br />
|-<br />
!Source!!Serving!!Niacin<br />
|-<br />
|Chicken||3 ounces||8.9 mg<br />
|-<br />
|Tuna (canned)||3 ounces||8.6 mg<br />
|-<br />
|Turkey||3 ounces||9.9 mg<br />
|-<br />
|Salmon||3 ounces||8.5 mg<br />
|-<br />
|Beef||3 ounces||4.4 mg<br />
|-<br />
|Cereal (unfortified)||1 cup||6.3 mg<br />
|-<br />
|Cereal (fortified)||1 cup||23.5 mg<br />
|-<br />
|Peanuts (dry-roasted)||1 ounce||4.1 mg<br />
|-<br />
|Pasta (enriched)||1 cup||2.2 mg<br />
|-<br />
|Lentils||1 cup||2.1 mg<br />
|-<br />
|Lima beans||1 cup||2.1 mg<br />
|-<br />
|Bread (whole-wheat)||1 slice||1.4 mg<br />
|-<br />
|Coffee||1 cup||2.0 mg<br />
|}<br />
[[File:B3 vitamin biosynthesis to NAD+.jpg|thumb|'''Vitamin B<sub>3</sub> biosynthesis to NAD+''']]<br />
==Vitamin B3 biosynthesis to NAD<sup>+</sup>==<br />
Niacin can contribute to NAD<sup>+</sup> biosynthesis through entering the salvage pathway. Niacin converts to NAMN via the enzyme, NAPT. Nicotinamide, the other B<sub>3</sub> vitamin, can enter the NAD<sup>+</sup> biosynthesis pathway as well. It enters the recycling pathway of the salvage pathway of NAD<sup>+</sup> biosynthesis. Nicotinamide is converted to NMN via the enzyme, NAMPT.<br />
<br />
Tryptophan, the protein building block, can enter the NAD<sup>+</sup> biosynthesis pathway through the ''de novo'' pathway of NAD<sup>+</sup> synthesis. In this manner, tryptophan from meats can also lead to the synthesis of NAD<sup>+</sup>.<ref>S Srivastava. '''Emerging therapeutic roles for NAD(+) metabolism in mitochondrial and age-related disorders'''. ''Clin Transl Med'', 2016; DOI: 10.1186/s40169-016-0104-7.</ref><br />
<br />
B3 vitamins and their product of biosynthesis, NAD<sup>+</sup>, are tightly connected to metabolism. Metabolism has a special role in the aging processes of mammals. Organism aging entails time and maturation culminating in cell, tissue, and organism death. Two key factors play roles in aging: accumulation of random changes and genes altering lifespan. NAD<sup>+</sup> plays a vital role in the random changes of aging and also in the genetic, programmed aspects of aging. NAD<sup>+</sup> maintains the transfer of electrons in cellular reactions, regulates calcium storage, regulates DNA damage and repair, and energy metabolism.<ref>Ping Xu, Anthony A Sauve. '''Vitamin B3, the nicotinamide adenine dinucleotides and aging'''. ''Mech Ageing Dev'', 2010; DOI: 10.1016/j.mad.2010.03.006.</ref><br />
<br />
B3 vitamins can stimulate cellular activity on their own, and cells can use them to synthesize NAD<sup>+</sup>. B<sub>3</sub> vitamins can also inhibit cell signaling enzymes. The B<sub>3</sub> vitamin deficiency-induced disease, pellagra, highlights the importance of B<sub>3</sub> vitamins in maintaining human health. Cells biosynthesize NAD<sup>+</sup> from B3 vitamins through multiple biosynthetic pathways, highlighting its crucial role in cellular metabolism and health. An enzyme adds a phosphate group in cells to NAD+, producing NADP. NADP gains electrons to generate NADPH. NADPH can then give electrons to molecules or ions in cells to protect against cell stress in aging. Depletion of NAD+ during aging can inhibit the activity of NADPH, which has adverse effects on healthy aging.<br />
<br />
Biosynthesis of NAD+ with B<sub>3</sub> vitamins can stimulate [[sirtuins]], proteins involved in DNA repair and chromosome stability. NAD<sup>+</sup> also acts as a molecule which PARPs use for their function. PARPs repair damaged DNA during aging. Enzymes involved in immune system function, CD38, use NAD<sup>+</sup> for their functions during aging as well.<br />
<br />
==References==<br />
<references /><br />
[[Category:Compounds]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=Category:Full_index&diff=173Category:Full index2020-05-14T20:51:15Z<p>Webadmin: </p>
<hr />
<div>*</div>Webadminhttps://www.nmnwiki.com/index.php?title=Category:Products&diff=171Category:Products2020-05-14T20:50:32Z<p>Webadmin: Created blank page</p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=Category:Institutions&diff=170Category:Institutions2020-05-14T20:50:21Z<p>Webadmin: Created blank page</p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=Category:Compounds&diff=169Category:Compounds2020-05-14T20:50:03Z<p>Webadmin: Created blank page</p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=Category:Key_Figures&diff=168Category:Key Figures2020-05-14T20:49:43Z<p>Webadmin: Created blank page</p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=Category:Research&diff=167Category:Research2020-05-14T20:49:07Z<p>Webadmin: Created page with "*"</p>
<hr />
<div>*</div>Webadminhttps://www.nmnwiki.com/index.php?title=Shin-ichiro_Imai&diff=166Shin-ichiro Imai2020-05-14T20:48:25Z<p>Webadmin: Created page with "{{Infobox | title = Shin-ichiro Imai, MD, PhD | image = Shin-Ichiro Imai <!-- Personal information --> | data1 = {{Infobox | subbox =..."</p>
<hr />
<div>{{Infobox<br />
| title = Shin-ichiro Imai, MD, PhD<br />
| image = [[File:Shin-Ichiro Imai.jpg|350px|Shin-Ichiro Imai]]<br />
<!-- Personal information --><br />
| data1 = {{Infobox | subbox = yes<br />
| headerstyle = background:#ddd;<br />
| header1 = Personal information<br />
| label2 = Born | data2 = 1962 (age 58) Tokyo, Japan<br />
| label3 = Nationality | data3 = Japanese<br />
| label4 = Education | data4 = Keio University School of Medicine (PhD, MD)<br />
| label5 = Field of study | data5 = Molecular mechanism of aging and longevity<br />
| label6 = Occupation | data6 = Researcher, professor<br />
| label7 = Affiliation | data7 = Washington University School of Medicine in St. Louis<br />
| label8 = Position | data8 = Professor of Developmental Biology and Medicine<br />
}}<br />
}}<br />
<br />
'''Shin-ichiro Imai''' is a researcher and physician at the Washington University School of Medicine where he is a professor of developmental biology specializing in anti-aging. After an early childhood interest in the sciences, Imai went on to pursue a medical degree at Keio University in Tokyo. Over half way through, however, Imai became torn over his increasing desire to be a researcher into cellular senescence, which is the study of how cells age and break down. <br />
<br />
After joining with Massachusetts Institute of Technology researcher Leonard Guarentes lab, he and fellow researchers went on to make significant progress in the study of anti-aging, starting in the 1999 discovery of the role of sirtuins in the metabolic regulation of cells. His work has continued to focus on the physiological processes that cause living cells to stay young and healthy, and focus on discovering supplementation that could reinforce the delivery and creation of anti-aging compounds within the human body.<br />
<br />
==Early life==<br />
Shin-ichiro Imai was often told the story of his birth by his parents: because of his mothers partially detached placenta, his chance of surviving birth was lower than normal, and his parents had to find a doctor willing to take on the risk. This story influenced him in later life to want to become a doctor. A self-described “active child”, he was given many biology projects by his history-teaching father, including one that involved tracking the height and petal sizes of sunflowers, which they grew and recorded. Imai attended Keio University in Tokyo with the intention of becoming a medical doctor, but in year four of six of his studies, he began to take an interest in research. After much questioning of which path to take, Imai finished his medical degree and began his doctoral work while working full time at the laboratory he had been volunteering at for years. <br />
<br />
Imai was fascinated by the relatively un-researched area of cellular immortality, which asked how cells have, and then lose, the ability to endlessly self-replicate, and how this ability might relate to both human lifespans and health risks like cancer. After a difficult start over the next two years setting up complex experiments to track the activation of different genes, he successfully discovered a protein called collagenase, later found to be part of a group of proteins that are involved in cellular senescence. Through his work, he met Leonard Guarente from the Massachusetts Institute of Technology at a scientific conference, and thereafter joined Guarente’s lab at MIT as a post-doctoral student. Imai met and worked with David Andrew Sinclair, a fellow anti-aging researcher and writer, at Leonard Guarentes lab. In 1999, Imai, Guarente, Sinclair, and others discovered how certain metabolic regulation proteins in cells, called sirtuins, silence certain genes when cells are young, and cease this ability when they grow old. This function was found to be dependent on the levels of energy in cells, and greatly influences cellular longevity.<br />
<br />
==Research==<br />
In 2001, Imai joined the faculty of Washington University in Saint Louis. Imai’s research into the nature of aging continued there, and in 2007 he published a study showing that giving female type 2 diabetic mice a compound called nicotinamide mono nucleotide (NMN) helped restore them to a healthy metabolism. The chemical compound also helped with other age-related conditions. Imai believes that the chemical NMN, which is derived from Vitamin B3, is used in the production of “NAM”, the loss of which is theorized to cause aging. Foods thought to be high in NMN include broccoli, edamame, cucumber, cabbage, and avocado, though Imai doesn’t believe that any of the foods would affect your rate of aging significantly.<br />
<br />
Imai did further research in 2013 on sirtuins, and found that supplementing the compound NMN did not stop the aging process, but helped extend the period of youth in mice. He also discovered that a sirtuin protein found in the brain, named “Sirti1”, was responsible for, and seemed to replicate, the effects of low-calorie diets. Many age-related health issues, such as declines in physical activity, body temperature, and other issues were also delayed by supplementation with this protein. <br />
<br />
Imai also explored the question of optimal levels of fat the human body should have, and found that as humans grew older, being slightly overweight was more desirable than being at “healthy” fat levels. Imai has hypothesized that fat cells somehow effect the regulation of the body’s physiology, possibly through the hypothalamus. In one study, mice that had low levels of “NAMPT” in their fatty tissues also had low levels of “fuel” in their hypothalamus, followed by worse measurements in their physical activity. Imai latter commented on a study involving stem cell injections into the hypothalamus of mice that caused a reduction in their memory loss, stating that the hypothalamus may control the aging and longevity of mammals.<br />
<br />
In 2016, Imai partnered with researchers in Japan to study the bio-availability and safety of NMN supplementation in humans. The idea behind this study was to try and “re-energize” the bodies cells and stimulate the restocking of the NAM supply, thereby disrupting the aging process. Imai has explained that, in ways science does not yet entirely understand, sirtuins, along with chemicals like metformin and rapamycin, are all involved in creating cellular energy, but when the process of creating and delivering NAM breaks down, aging is the result.<br />
<br />
In 2019, Imai worked on a study involving the injection of young mouse blood into older mice which caused increased longevity. Imai and his team hypothesized that the increased presence of a protein enzyme called “eNAMPT” in younger blood, which helps cells make energy, may have been the cause. Previous studies had focused on giving whole blood to older mice, whereas this study focused just on the enzyme. This chemical had the effect of mimicking calorie restriction without actually having to consume fewer calories. The mice in the study given eNAMPT supplements lived on average sixteen percent longer. <br />
<br />
Imai has also studied how the bodies cells react to the loss of the “fuel” that is “NAM”, and how the body attempts to summon more of it when their supply starts to run out. Imai’s research was able to show compound Slc12a8 is the NMN transporter, which had not previously been identified. Imai has noted that the human body ends up in a kind of “bottleneck” as it ages, as the body can no longer produce enough NAD, and yet it needs more than before, which Imai speculates is due to chronic inflammation. He is working with Washington University’s Office of Technology Management and a Japanese company called Teijin Limited to use this knowledge to create therapies both increasing NAD production and helping in the transportation of it throughout the body. Because increased production of NAD can sometimes be used by virulent cancerous tumors, studies in mice continuously look for any rise in the rate of cancer. Imai has also cautioned that longevity and health are sometimes at odds, and continued low calorie anti-aging can lead to fragility, meaning higher susceptibility to disease, as was demonstrated in studies done on nematodes in 2019. eNAMPT levels will also be examined during the study to see if they can serve as a biomarker for age. Research is ongoing in older humans to see if the levels of eNAMPT are different in people who have experienced illness, and if the compound could be used for anti-aging supplementation.<br />
<br />
==References==<br />
[[Category:Key Figures]]<br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=File:Shin-Ichiro_Imai.jpg&diff=165File:Shin-Ichiro Imai.jpg2020-05-14T20:48:10Z<p>Webadmin: </p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=David_Sinclair&diff=164David Sinclair2020-05-14T20:45:48Z<p>Webadmin: Created page with "{{Infobox | title = David Sinclair, PhD | image = Sinclair in his lab at Harvard Medical School (2017) <!-- Personal information --> |..."</p>
<hr />
<div>{{Infobox<br />
| title = David Sinclair, PhD<br />
| image = [[File:Sinclair-image2.jpg|350px|Sinclair in his lab at Harvard Medical School (2017)]]<br />
<!-- Personal information --><br />
| data1 = {{Infobox | subbox = yes<br />
| headerstyle = background:#ddd;<br />
| header1 = Personal information<br />
| label2 = Born | data2 = June 26, 1969 (age 50) Sydney, Australia<br />
| label3 = Nationality | data3 = Australian<br />
| label4 = Education | data4 = University of New South Wales (BS, PhD)<br />
| label5 = Field of study | data5 = Molecular genetics<br />
| label6 = Occupation | data6 = Professor, author, entrepreneur<br />
| label7 = Position | data7 = co-Director of the Paul F. Glenn Center for the Biology of Aging at Harvard Medical School<br />
}}<br />
}}<br />
<br />
<br />
'''David Andrew Sinclair''' is an Australian teacher of genetics at Harvard University who specializes in the study of anti-aging. After meeting researcher Leonard Guarente, Sinclair worked with him as a post-doctoral student and began to study the genetic and non-genetic reasons for aging. After years of research, Sinclair founded Sirtris Pharmaceuticals in 2004 to research the re-activation of molecules that supposedly prevent aging, known as [[Sirtuins|sirtuins]]. <br />
<br />
The research he did suggested that the compound [[Resveratrol|resveratrol]] would help reverse aging and was found primarily in red wine. In studies he had done, he was able to extend the life of small animals, though later studies on humans did not yield a medical product. In the last decade, Sinclair has founded or been a part of several startups focused on different aspects of anti-aging, from replicating the effects of cardiovascular exercise, or the effects of a healthy diet, as well as attempting to disrupt the aging process itself. He has become a well known expert in the field, often being interviewed, and noted for his research.<br />
<br />
==Biography==<br />
===Early life and education===<br />
Sinclair grew up in Saint Ives Australia, and since the age of four, has been “obsessed” with “the gravity of life”. Interested in science from an early age, he experimented with making bombs from chlorine or gunpowder. Later he attended the University of New South Wales, and studied gene regulation in yeast. <br />
<br />
While attending college, he attended a lecture by a visiting researcher named Leonard Guarente, whose area of focus was in molecular biology at the Massachusetts Institute of Technology. Sinclair ended up joining Guarente’s lab as a post doctoral student in 1995. After four years, Sinclair was offered a position with Elixir Pharmaceuticals which his colleague and mentor Guarente had cofounded.<br />
<br />
==Business career==<br />
===Sirtris Pharmaceuticals===<br />
In 2004, Sinclair convinced philanthropist Paul Glenn to donate five million dollars to start an institute to study aging at Harvard, which Sinclair became director of. That same year, Sinclair cofounded a biotechnology company called Sirtris Pharmaceuticals with the assistance of Kevin Bitterman, a researcher at Harvard Medical School who had studied under Sinclair. In May 2007, Sirtris completed its initial public offering and raised 62 million dollars.<br />
<br />
Sinclair’s company became one of the biggest in anti-aging research largely due to their work on a compound called resveratrol and their attempt at an anti-aging product called SRT501. This compound contained molecules that the lab claimed would be able to activate sirtuins which would reverse the aging process. Animal testing had shown their was potential for the formula to treat diabetes and neurological disorders, and human trials were planned to see if it affected Melas disease, which caused accelerated again as well as brain and muscle deterioration.<br />
<br />
Sirtris Pharmaceuticals was sold in 2008 for 720 million to GlaxoSmithKline, of which Sinclair received eight million. A drug using resveratrol and other compounds were tested by Sirtris in clinical trials over several years, but a drug that would help with diabetes or other diseases was not identified. GlaxoSmithKline ended research into resveratrol in 2010 because of its low efficacy and side effects. Sirtris’s existence as an independent unit ended in 2013 when it was absorbed into GlaxoSmithKline.<br />
<br />
===Philanthropy===<br />
During the COVID-19 pandemic, David Sinclair donated Polymerase Chain Reaction (PRC) kits to coronavirus testing facilities.<br />
<br />
===Other endeavors===<br />
During his time before and after his involvement with Sirtris Pharmaceuticals, Sinclair was regularly involved with other scientific startups and research groups. In 2008, he was invited to join the scientific advisory board of Shaklee, a supplement company selling a product called “Vivix”, a grape-flavored anti-aging supplement. In the early 2010’s, Sinclair’s existing Harvard anti-aging lab came into money trouble due to budget cuts and smaller grants from the National Institutes of Health, having to cut the amount of researchers from eighteen to four or five in order to keep from shutting down. In 2015, Sinclair was funded by the United States Department of Defense to research survival and recovery of soldiers on the battlefield, and in 2018 he started “Arc Bio”, a tech startup with researchers from Harvard University and Stanford University, to develop a disease database to help stop outbreaks and reduce laboratory testing time. Also in 2018, he worked with “Rejuvenate Bio”, a startup working to extend the life of, and cure diseases found in, dogs. Sinclair is also an investor in a company called “InsideTracker”, which attempts to measure peoples lifespans.<br />
<br />
==Research==<br />
One of the main focus’s of Sinclair’s research has been his work on a compound called resveratrol, with which he was able to extend the life of mice by twenty-four percent, and fifty-nine percent in flies and worms. The mice used in this study were overweight, yet their longevity was as long as the mice of normal weight, most likely due to increased insulin sensitivity. Mice, along with other animals with shorter lifespans such as worms and fruit flies are often used in Sinclair’s research as human trails of medicines can take decades for results. Early in his research, Sinclair screened many food products to see which held the highest amounts of resveratrol, finally settling on red wine. That the chemical is found in red wine was at least initially thought to help explain the “French Paradox”, which is shorthand for the observation that French life expectancies are not lower than normal despite a generally heavy diet of fatty foods.<br />
<br />
Sinclair’s work has also focused upon calorie restriction, and during his research, he identified genes that made yeast consume fewer calories, yet live 30% longer. Sinclair has stated his belief that calorie restrictive diets cause the body to focus on self repair, and that a compound found in cells called [[NAD+|Nicotinamide adenine dinucleotide (NAD<sup>+</sup>)]] could be used to induce this repair state in the body even without calorie restriction. In 2013, Sinclair published a study claiming that a family of proteins called sirtuins, which help regulate other cells, became overwhelmed with DNA repair work over time, and were then unable to read genetic information due to a lack of NAD, leading to aging. To test this theory, one experiment involved “breaking” mouse DNA to see if it accelerated aging. As humans age, they produce less and less NAD, and Sinclair believes that NAD supplementation could reverse aging caused by this process. A 2017 study conducted on mice being given “NAD+” in their water resulted in the mice acting and looking younger. Sinclair has tried to commercialize molecules known as “NAD boosters” which he claims help with life span extension.<br />
<br />
Sinclair has also used a compound called [[NMN|Nicotinamide mononucleotide (NMN)]] to help promote the creation of blood vessels near muscles and organs, causing a sixty percent increase in the treadmill running ability of the test mice. As resveratrol attempted to replicate a healthy diet, NMN is seemingly attempting to chemically replicate the effects of increased cardiovascular health.<br />
<br />
Sinclair believes that aging should be labeled a “disease”, not only in order to free up funding in the medical community that reserves most research for the study of disease, but to treat the many disorders and diseases that are occurring due to what Sinclair views is their root cause; aging. In this way, instead of treating many diseases in a “whack a mole” fashion, Sinclair believes that scientists can go right to the source and make it possible for humans to live to 150 years old. In the meantime however, Sinclair’s focus is to deal with illnesses such as heart disease, cancer, diabetes, and dementia through his NAD treatment.<br />
<br />
==Personal life and diet==<br />
Sinclair is regarded by some of his colleagues as very persuasive, but sometimes lacking the patience and having too much passion for a scientist. His mentor Leonard Guarente has called him a “bold scientist”, who is willing to take chances and try risky experiments”.<br />
<br />
Sinclair’s diet has changed because of his research; he eats more vegetables than meat, and takes supplements including resveratrol and an NAD compound. He believes in a practice called “hormesis”, which involves introducing metabolic stress by intermittent fasting and metabolic stress. He has summed up this approach as “Every day, try to be hungry and out of breath”. <br />
<br />
With his own medical products, Sinclair believes he has extended his biological clock by two decades. He also estimates that at least a third of his colleagues are taking experimental anti-aging molecules.<br />
<br />
==Publications, media, and awards==<br />
In 2019, Sinclair and journalist Matthew LaPlante released a book entitled ''Lifespan: Why We Age - and Why We Don’t Have To'', which discussed not just the medical ways human lifespans could be extended, but the societal and ethical implications of such an occurrence. Sinclair is noted in the book as calling aging a “disease”, a concept not widely agreed with in the medical community, but one which Sinclair claims has restricted funding for anti-aging research. On October 6, 2019, ''Lifespan'' was number twelve on the New York Times Best Seller List under “Hardcover Nonfiction” books. Sinclair has received honors for his research, such as his inclusion as one of Time Magazines 100 Most Influential People of 2014, and as part of their “Healthcare 50” in 2018.<br />
<br />
==External links==<br />
<br />
*[https://twitter.com/davidasinclair Twitter]<br />
*[https://www.facebook.com/davidsinclairphd Facebook]<br />
*[https://www.instagram.com/davidsinclairphd/ Instagram]<br />
*[https://www.linkedin.com/in/sinclairda/ LinkedIn]<br />
*[https://orcid.org/0000-0002-9936-436X ORCHID]<br />
*[https://connects.catalyst.harvard.edu/Profiles/display/Person/17959 Harvard Catalyst]<br />
*[https://genetics.med.harvard.edu/sinclair/ The Sinclair Lab]<br />
*[https://lifespanbook.com/ Life Span (Book)]<br />
*[https://genetics.med.harvard.edu/sinclair/publications.php Sinclair Lab Publications]<br />
<br />
[[Category:Key Figures]]<br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=File:Sinclair-image2.jpg&diff=163File:Sinclair-image2.jpg2020-05-14T20:45:31Z<p>Webadmin: </p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=Sirtuins&diff=162Sirtuins2020-05-14T20:44:00Z<p>Webadmin: Created page with "{{Infobox | title = Sirtuins | image = alt=Nicotinamide mononucleotide | caption1 = {{{caption|}}} <!-- Background --> | data1 = {..."</p>
<hr />
<div>{{Infobox<br />
| title = Sirtuins<br />
| image = [[File:Sirtuin-2.jpg|350px|Sirtuin 2|alt=Nicotinamide mononucleotide]]<br />
| caption1 = {{{caption|}}}<br />
<!-- Background --><br />
| data1 = {{Infobox | subbox = yes<br />
| headerstyle = background:#ddd;<br />
| header1 = Background<br />
| label2 = Aliases | data2 = SIRT<br />
| label3 = Class | data3 = Protein<br />
| label4 = Functions | data4 = DNA repair, genome stability, cellular senescence<br />
}}<br />
}}<br />
'''Sirtuins''' are [[NAD+|NAD<sup>+-</sup>]] dependent proteins which remove molecular tags from other proteins involved in DNA expression.<br />
<br />
==Functions of sirtuins in mammals==<br />
The functions of sirtuins play key roles in metabolism, inflammation, DNA repair, insulin secretion, and aging. In general, through removing these molecular tags, sirtuins suppress DNA expression and promote chromosome stability.<br />
<br />
==Types of sirtuins in mammals==<br />
Mammals have seven different sirtuins. Of these, five sirtuins play a critical function in aging: SIRT1, SIRT2, SIRT3, SIRT6, SIRT7<br />
<br />
{| class="wikitable"<br />
|-<br />
!Sirtuin!!Activity!!Function in aging<br />
|-<br />
|SIRT1||ADP-ribosyl-transferase<br />
Deacetylase <br />
||Lifespan extension<br />
DNA repair<br />
Cell cycle arrest <br />
Cellular senescence<br />
Cell cycle regulation<br />
Mitochondrial function<br />
Ocidative stress<br />
Centenarian-linked SNP<br />
|-<br />
|SIRT2||Deacetylase||Cell cycle regulation<br />
|-<br />
|SIRT3||Deacetylase||Mitochondrial function<br />
Oxidative stress<br />
Centenarian-linked SNP<br />
|-<br />
|SIRT4||ADP-ribosyl-transferase<br />
Deacetylase <br />
||Fatty acid oxidation<br />
Apoptosis<br />
|-<br />
|SIRT5||Demalonylase<br />
Desuccinylase<br />
Deacetylase<br />
||Fatty acid oxidation<br />
Oxidative stress<br />
|-<br />
|SIRT6||ADP-ribosyl-transferase<br />
Deacetylase<br />
||Lifespan extension<br />
DNA repair<br />
Genome stability<br />
Telomere maintenance<br />
|-<br />
|SIRT7||Deacetylase||Epigenetic regulation<br />
Stress resistance<br />
Apoptosis<br />
|} <ref>Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.</ref><br />
<br />
<br />
===SIRT1===<br />
<br />
:''Main article: [[SIRT1]]''<br />
<br />
SIRT1, the most studied of the sirtuins in this family of proteins,could play an important role in aging. Mice with an extra copy of the SIRT1 gene, which have higher levels of SIRT1 in cells, have lower levels of DNA damage. These mice also have lower levels of a protein, p16, which is a marker of aging <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
Daniel Herranz, Marta Canamero, Francisca Mulero, Barbara Martinez-Pastor, Oscar Fernandez-Capetillo, Manuel Serrano. '''Sirt1 improves healthy ageing and protects from metabolic syndrome-associated cancer syndrome'''. ''Nat Commun'', 2010; DOI: 10.1038/ncomms1001.</ref>. SIRT1 reductions in cells with aging promote the expression of genes associated with aging <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
Jaw-woong Hwang, Hongwei Yao, Samuel Caito, Isaac K. Sundar, Irfan Rahman. '''Redox regulation of SIRT1 in inflammation and cellular senescence'''. ''Free Radic Biol Med'', 2013; DOI: 10.1016/j.freerradbiomed.2013.03.015.</ref>. SIRT1 levels decrease with age in liver cells, mostly due to lower NAD+ availability <ref>Nady Braidy, Gilles J. Guillemin, Hussein Mansour, Tailoi Chan-Ling, Anne Poljak, Ross Grant. '''Age related changes in NAD+ metabolism oxidative stress and Sirt1 activity in wistar rats'''. ''PLoS One'', 2011; DOI: 10.1371/journal.pone.0019194.</ref>. DNA damage occurs with falling SIRT1 levels.<br />
<br />
SIRT1 plays a pivotal role in early development as well. In mice without SIRT1, SIRT1 knockout mice, only 20% reach maturity <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.</ref>. The mice without SIRT1 are sterile, smaller than normal, and develop more slowly compared to normal mice <ref>Hwei-Ling Cheng, Raul Mostoslavsky, Shin’ichi Saito, John P. Manis, Yansong Gu, Parin Patel, Roderick Bronson, Ettore Appella, Frederick W. Alt, Katrin F. Chua. '''Developmental defects and p53 hyperacetylation in Sir2 homolog (SIRT1)-deficient mice'''. ''Proc Natl Acad Sci U S A'', 2003; DOI: 10.1073/pna.1934713100.<br />
<br />
Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
Michael W. McBurney, Xiaofeng Yang, Karen Jardine, Mary Hixon, Kim Boekelheide, John R. Webb, Peter M. Lansdorp, Madeleine Lemieux. '''The mammalian SIR2α protein has a role in embryogenesis and gametogenesis'''. ''Mol Cell Biol'', 2003; DOI: 10.1128/MCB.23.1.38-54.2003.</ref>.<br />
<br />
===SIRT2===<br />
SIRT2 levels may be markers of obesity. SIRT2 levels drop in fat tissue of obese people <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
Jaya Krishnan, Carsten Danzer, Tatiana Simka, Josef Ukropec, Katharina Manuela Walter, Susann Kumpf, Peter Mirtschink, Barbara Ukropcova, Daniela Gasperikova, Thierry Pedrazzini, Wilhelm Krek. '''Dietary obesity-associated Hif1α activation in adipocytes restricts fatty acid oxidation and energy expenditure via suppression of the Sirt2-NAD+ system'''. ''Genes Dev'', 2012; DOI: 10.1101/gad.180406.111.</ref>. In mice undergoing calorie restriction through a controlled diet, SIRT2 levels increase in white fat tissue and kidneys <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
Fei Wang, Margaret Nguyen, F. Xiao-Feng Qin, Qiang Tong. '''SIRT2 deacetylates FOXO3a in response to oxidative stress and caloric restriction'''. ''Aging Cell'', 2007; 6: 505-514.</ref>.<br />
<br />
===SIRT3===<br />
Evidence exists SIRT3 influences longevity in humans <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.</ref>. A particular gene marker in the SIRT3 gene, a polymorphism, is found more often in people who live longer <ref>D. Bellizzi, S. Dato, P. Cavalcante, G. Covello, F. Di Cianni, G. Passarino, G. Rose, G. De Benedictis. '''Characterization of a bidirectional promoter shared between two human genes related to aging: SIRT3 and PSMD13'''. ''Genomics'', 2007; 89(1): 143-150.<br />
<br />
Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.</ref>. Mice lacking SIRT3 have decreased oxygen consumption and increased markers of cellular stress, reactive oxygen species <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
Enxuan Jing, Brice Emanuelli, Matthew D. Hirschey, Jeremie Boucher, Kevin Y. Lee, David Lombard, Eric M. Verdin, C. Ronald Kahn. '''Sirtuin-3 (Sirt3) regulates skeletal muscle metabolism and insulin signaling via altered mitochondrial oxidation and reactive oxygen species production'''. ''Proc Natl Acad Sci U S A'', 2011; DOI: 10.1073/pnas.1111308108.</ref>.<br />
<br />
===SIRT6===<br />
Research using mice lacking SIRT6 provide the first evidence sirtuins are involved in regulating mammalian aging. With reduced levels of SIRT6, mice fail to reach a normal lifespan <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.</ref>. Three weeks after birth, these mice exhibit premature aging and degeneration, which results in death around the fourth week of life <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.</ref>. Mice without SIRT6 are also smaller than ‘normal,’ wild type, individuals.<br />
<br />
===SIRT7===<br />
Mice lacking SIRT7 age prematurely and have heart complications, lethal heart hypertrophy <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
Olesya Vakhrusheva, Christian Smolka, Praveen Gajawada, Sawa Kostin, Thomas Boettger, Thomas Kubin, Thomas Braun, Eva Bober. '''Sirt7 increases stress resistance of cardiomyocytes and prevents apoptosis and inflammatory cardiomyopathy in mice'''. ''Circ Res'', 2008; 102(6): 703-710.</ref>.<br />
<br />
==Research==<br />
===Aging===<br />
Research on aging indicates sirtuins are essential factors for delaying cell deterioration with age, cellular senescence. Scientists consider cellular senescence as a beneficial process to inhibit the accumulation of abnormal cells in young organisms. Stress causes this accumulation. Such an accumulation of abnormal cells is detrimental to older organisms and thought to induce age-related diseases. Additionally, senescent cells increase with aging <refr>(Krtolica and Campisi, 2002; Lee et al., 2019)<nowiki></ref></nowiki>.<br />
<br />
Two Sirtuins have been investigated in mammals with protective effects from senescence in mammals, SIRT1 and SIRT6. Levels of these two Sirtuins are reported to decrease in senescent cell lines of mice <ref>Tarique Anwar, Sanjeev Khosla, Gayatri Ramakrishna. '''Increased expression of SIRT2 is a novel marker of cellular senescence and is dependent on wild type p53 status'''. ''Cell Cycle'', 2016; DOI: 10.1080/15384101.2016.1189041.<br />
<br />
<br />
Jian Chen, Jun-Jun Xie, Meng-Yun Jin, Yun-Tao Gu, Cong-Cong Wu, Wei-Jun Guo, Ying-Zhao Yan, Zeng-Jie Zhang, Jian-Le Wang, Xiao-Lei Zhang, Yan Lin, Jia-Li Sun, Guang-Hui Zhu, Xiang-Yang Wang, Yao-Sen Wu. '''Sirt6 overexpression suppresses senescence and apoptosis of nucleus pulposus cells by inducing autophagy in a model of intervertebral disc degeneration'''. ''Cell Death Dis'', 2018; DOI: 10.1038/s41419-017-0085-5.<br />
<br />
<br />
Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Tsutomu Sasaki, Bernhard Maier, Andzej Bartke, Heidi Scrable. '''Progressive loss of SIRT1 with cell cycle withdrawal'''. ''Aging Cell'', 2006; DOI: 10.1111/j.1474-9726.2006.00235.x.<br />
<br />
<br />
Myung Jin Son, Youjeong Kwon, Tawkwon Son, Yee Sook Cho. '''Restoration of mitochondrial NAD+ levels delays stem cell senescence and facilitates reprogramming of aged somatic cells'''. ''Stem Cells'', 2016; DOI: 10.1002/stem.2460.</ref>. Reducing SIRT1 and SIRT6 using molecular inhibitors of their function, siRNA or miRNA, promotes early senescence characteristics in the interior of blood vessels, endothelial cells <ref>Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Rossella Menghini, Viviana Casagrande, Marina Cardellini, Eugenio Martelli, Alessandro Terrinoni, Francesca Amati, Mariuca Vasa-Nicotera, Arnaldo Ippoliti, Giuseppe Novelli, Gerry Melino, Renato Lauro, Massimo Federici. '''MicroRNA 217 modulates endothelial cell senescence via silent information regulator 1'''. ''Circulation'', 2009; DOI: 10.1161/CIRCULATIONAHA.109.864629.<br />
<br />
<br />
Raul Mostoslavsky, Katrin F. Chua, David B. Lombard, Wendy W. Pang, Miriam R. Fischer, Lionel Gellon, Pingfang Liu, Gustavo Mostoslavsky, Sonia Franco, Michael W. Murphy, Kevin D. Mills, Parin Patel, Joyce T. Hsu, Andrew L. Hong, Ethan Ford, Hwei-Ling Cheng, Caitlin Kennedy, Nomeli Nunez, Roderick Bronson, David Fredewey, Wojtek Auerbach, David Valenzuela, Margaret Karow, Michael O. Hottiger, Stephen Hursting, J. Carl Barrett, Leonard Guarente, Richard Mulligan, Bruce Demple, George D. Yancopoulos, Frederick W. Alt. '''Genomic instability and aging-like phenotype in the absence of mammalian SIRT6'''. ''Cell'', 2006; DOI: 10.1016/j.cell.2005.11.044.<br />
<br />
<br />
Hidetaka Ota, Masahiro Akishita, Masato Eto, Katsuya Iijima, Masao Kaneki, Yasuyoshi Ouchi. '''Sirt1 modulates premature senescence-like phenotype in human endothelial cells'''. ''J Mol Cell Cardiol'', 2007; DOI: 101016/j.yjmcc.2007.08.008.</ref>. Increasing SIRT1 and SIRT6 gene expression through over-expression suppresses cellular senescence <ref>Jian Chen, Jun-Jun Xie, Meng-Yun Jin, Yun-Tao Gu, Cong-Cong Wu, Wei-Jun Guo, Ying-Zhao Yan, Zeng-Jie Zhang, Jian-Le Wang, Xiao-Lei Zhang, Yan Lin, Jia-Li Sun, Guang-Hui Zhu, Xiang-Yang Wang, Yao-Sen Wu. '''Sirt6 overexpression suppresses senescence and apoptosis of nucleus pulposus cells by inducing autophagy in a model of intervertebral disc degeneration'''. ''Cell Death Dis'', 2018; DOI: 10.1038/s41419-017-0085-5.<br />
<br />
<br />
Min Young Kim, Eun Sil Kang, Sun Ah Ham, Jung Seok Hwang, Ttae Sik Yoo, Hanna Lee, Kyun Shin Paek, Chankyu Park, Hoon Taek Lee, Jin-Hoi Kim, Chang Woo Han, Han Geuk Seo. '''The PPARδ-mediated inhibition of angiotensin II-induced premature senescence in human endothelial cells is SIRT1-dependent'''. ''Biochem Pharmacol'', 2012; DOI: 10.1016/j.bcp.2012.09.008.<br />
<br />
<br />
Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Hongwei Yao, Sangwoon Chung, Jae-woong Hwang, Saravanan Rajendrasozhan, Isaac K. Sundar, David A. Dean, Michael W. McBurney, Leonard Guarente, Wei Gu, Mikko ROnty, Vuokko L. Kinnula, Irfan Rahman. '''SIRT1 protects against emphysema via FOXO3-mediated reduction of premature senescence in mice'''. ''J Clin Invest'', 2012; DOI: 20.1172/JCI60132.<br />
<br />
<br />
Yi Zu, Ling Liu, Mary Y.K. Lee, Cheng Xu, Yan Liang, Ricky Y. Man, Paul M. Vanhoutte, Yu Wang. '''SIRT1 promotes proliferation and prevents senescence through targeting LKB1 in primary porcine aortic endothelial cells'''. ''Circ Res'', 2010; DOI: 10.1161/CIRCRESAHA.109.215483.</ref>. Altogether, this research indicates Sirtuins play significant roles in cellular senescence.<br />
<br />
Suppression of cellular senescence with Sirtuins stems from preventing telomere degradation and promoting DNA damage repair, two key processes in maintaining DNA integrity. For example, SIRT1 and SIRT6 have known roles in regulating telomere reverse transcriptase expression, an enzyme necessary for telomere elongation <ref>Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Shuntaro Yamashita, Kaori Ogawa, Takahiro Ikei, Miyako Udono, Tsukasa Fujiki, Yoshinori Katakura. '''SIRT1 prevents replicative senescence of normal human umbilical cord fibroblast through potentiating the transcription of human telomerase reverse transcriptase gene'''. ''Biochem Biophys Res Commun'', 2012; DOI: 10.1016/j.bbrc.2011.12.021.</ref>. Telomere elongation is necessary to avoid premature cellular senescence. SIRT1 and SIRT6 also remove acetyl groups, deacetylate, from proteins called ‘histones.’ DNA wraps around ‘histones,’ a process necessary for DNA stability. Through deacetylating histones, histone 3 lysine 9 and histone 3 lysine 56, integrity of telomeres increases along with general DNA integrity <ref>Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Mateusz Watroba, Ilona Dudek, Marta Skoda, Aleksandra Stangret, Przemyslaw Rzodkiewicz, Dariusz Szukiewicz. '''Sirtuins, epigenetics and longevity'''. ''Ageing Res Rev'', 2017; DdOI: 10.1016/j.arr.2017.08.001.</ref>. Additionally, research indicates SIRT1 and SIRT6 are recruited to damaged DNA sites. SIRT1 and SIRT6 then promote DNA repair through deacetylation of repair proteins such as poly (ADP-ribose) polymerase (PARP)-1, Ku70, NBS, and Werner (WRN) helicase <ref>Jaemin Jeong, Kyungmi Juhn, Hansoo Lee, Sang-Hoon Kim, Bon-Hong Min, Kyung-Mi Lee, Myung-Haeng Cho, Gil-Hong Park, Kee-Ho Lee. '''SIRT1 promotes DNA repair activity and deacetylation of Ku70'''. ''Exp Mol Med'', 2007; DOI: 10.1038/emm.2007.2.<br />
<br />
<br />
Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Eriko Michishita, Ronald A. McCord, Elisabeth Berber, Mitomu Kioi, Hesed Padilla-Nash, Mara Damian, Peggie Cheung, Rika Kusumoto, Tiara L.A. Kawahara, J. Carl Barrett, Howard Y. Chang, Vilhelm A. Bohr, Thomas Ried, Or Gozani, Katrin F. Chua. '''SIRT6 is a histone H3 lysine 9 deacetylase that modulates telomeric chromatin'''. ''Nature'', 2008; DOI: 10.1038/nature06736.<br />
<br />
<br />
Philipp Oberdoerffer, Shaday Michan, Michael McVay, Raul Mostoslavsky, James Vann, Sang-Kyu Park, Anrea Hartlerode, Judith Stegmuller, Angela Hafner, Patrick Lerch, Sarah M. Wright, Kevin D. Mills, Azad Bonni, Bruce A. Yankner, Ralph Scully, Tomas A. Prolla, Frederick W. Alt, David A. Sinclair. '''SIRT1 redistribution on chromatin promotes genomic stability but alters gene expression during aging'''. ''Cell'', 2008; DOI: 10.1016/j.cell.2008.10.025.<br />
<br />
<br />
Zhigang Yuan, Edward Seto. '''A functional link between SIRT1 deacetylase and NBS1 in DNA damage response'''. ''Cell Cycle'', 2007; DOI: 10.4161/cc.6.23.5026.</ref>.<br />
<br />
In addition to roles in maintaining DNA integrity and repairing damaged sites of DNA thus preventing cellular senescence, research indicates Sirtuins regulate lifespan in several animals. Increased levels of the Sirtuin gene, SIR2, in yeast extends its lifespan. The same gene in other animals, homologues, extends lifespan in roundworms, fruit flies, and mice, also <ref>Matt Kaeberlein, Mitch McVey, Leonard Guarente. '''The ''SIR2/3/4'' complex and ''SIR2'' alone promote longevity in ''Saccharomyces cerevisiae'' by two different mechanisms'''. ''Genes Dev'', 1999; DOI: 10.1101/gad.13.19.2570.<br />
<br />
<br />
Yariv Kanfi, Shoshana Naiman, Gail Amir, Victoria Peshti, Guy Zinman, Liat Nahum, Ziv Bar-Joseph, Haim Y. Cohen. '''The sirtuin SIRT6 regulates lifespan in male mice'''. ''Nature'', 2012; DOI: 10.1038/nature10815.<br />
<br />
<br />
Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Blanka Rogina, Stephen L. Helfand. '''Sir2 mediates longevity in the fly through a pathway related to calorie restriction'''. ''Proc Natl Acad Sci U S A'', 2004; DOI: 10.1073/pnas.0404184101.<br />
<br />
<br />
Heidi A. Tissenbaum, Leonard Guarente. '''Increased dosage of a ''sir-2'' gene extends lifespan in ''Caenorhabditis elegans'''''. ''Nature'', 2001; DOI: 10.1038/35065638.</ref>. The first study of the longevity enhancing effects of SIR2 occurred approximately 20 years ago in yeast <ref>Matt Kaeberlein, Mitch McVey, Leonard Guarente. '''The ''SIR2/3/4'' complex and ''SIR2'' alone promote longevity in ''Saccharomyces cerevisiae'' by two different mechanisms'''. ''Genes Dev'', 1999; DOI: 10.1101/gad.13.19.2570.<br />
<br />
<br />
Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.</ref>. Follow-up investigations examined effects of increasing expression of Sir2 in other organisms. For example, increasing sir2.1 expression levels 7-fold in roundworms extended the lifespan of the worms by 14.8-50.5% <ref>Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Heidi A. Tissenbaum, Leonard Guarente. '''Increased dosage of a ''sir-2'' gene extends lifespan in ''Caenorhabditis elegans'''''. ''Nature'', 2001; DOI: 10.1038/35065638.</ref>. Furthermore, a mutation resulting in reduced expression of the sir2.1 gene resulted in decreased lifespan of roundworms. In fruit flies, inducing increased expression, over-expressing, the dSir2 gene in neuronal cells or fat cells extended lifespan approximately 52% and 32.2%, respectively <ref>Kushal Kr. Banerjee, Champakali Ayyub, Syed Zeeshan Ali, Vinesh Mandot, Nagaraj G. Prasad, Ullas Kolthur-Seetharam. '''dSir2 in the adult fat body, but not in muscles, regulates life span in a diet-dependent manner'''. ''Cell Rep'', 2012; DOI: 10.1016/j.celrep.2012.11.013.<br />
<br />
<br />
Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Blanka Rogina, Stephen L. Helfand. '''Sir2 mediates longevity in the fly through a pathway related to calorie restriction'''. ''Proc Natl Acad Sci U S A'', 2004; DOI: 10.1073/pnas.0404184101.</ref>. Mice over-expressing SIRT1 in the brain, the hypothalamus more specifically, had an increased median lifespan of 16% in females and 9% in males <ref>Shin-Hae Lee, Ji-Hyeon Lee, Hye-Yeon Lee, Kyung-Jin Min. '''Sirtuin signaling in cellular senescence and aging'''. ''BMB Rep'', 2019; DOI: 10.5483/BMBRep.2019.52.1.290.<br />
<br />
<br />
Akiko Satoh, Cynthia S. Brace, Nick Rensing, Paul Clifton, David F. Wozniak, Erik D. Herzog, Kelvin A. Yamada, Shin-ichiro Imai. '''Sirt1 extends life span and delays aging in mice through the regulation of Nk2 homeobox 1 in the DMH and LH'''. ''Cell Metab'', 2013; DOI: 10.1016/j.cmet.2013.07.013.</ref>.<br />
<br />
==Dietary activators of sirtuins==<br />
Dietary ingredients, functional foods, and nutraceuticals provide great hope for promoting health span and longevity, along with preventing age-related diseases <ref>CKB Ferrari. '''Functional foods, herbs an nutraceuticals: towards biochemical mechanisms of healthy aging'''. ''Biogerontology'', 2004; 5: 275-289.<br />
<br />
<br />
Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.</ref>. Sirtuin-activating compounds derived from plants include flavones, stilbenes, chalcones, and anthocyanidins, which can directly activate SIRT1 <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.</ref>. Other agents reported to have anti-aging effects through modulating the SIRT1 cellular pathway include resveratrol <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
Chung-Lan Kao, Liang-Kung Chen, Yuh-Lih Chang, Ming-Chih Yung, Chuan-Chih Hsu, Yu-Chih Chen, Wen-Liang Lo, Shih-Jen Chen, Hung-Hai Ku, Shin-Jang Hwang. '''Resveratrol protects human endothelium from H2O2-induced oxidative stress and senescence via SirT1 activation'''. ''J Atheroscler Thromb'', 2010; 17: 970-979.</ref>, cilostazol <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
Hidetaka Ota, Masato Eto, Mitsunobu R. Kano, Sumito Ogawa, Katsuya Iijima, Masahiro Akishita, Yasuyoshi Ouchi. '''Cilostazol inhibits oxidative stress-induced premature senescence via upregulation of Sirt1 in human endothelial cells'''. ''Arterioscler Thromb Vasc Biol'', 2008; 28: 1634-1639.</ref>, paeonol <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
Juliana Jamal, Mohd Rais Mustafa, Pooi-Fong Wong. '''Paeonol protects against premature senescence in endothelial cells by modulating Sirtuin 1 pathway'''. ''J Ethnopharmacol'', 2014; 154: 428-436.</ref>, statins <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
Hidetaka Ota, Masato Eto, Mitsunobu R. Kano, Tomoaki Kahyo, Mitsutoshi Setou, Sumito Ogawa, Katsuya Iijima, Masahiro Akishita, Yasuyoshi Ouchi. '''Induction of endothelial nitric oxide synthase, SIRT1, and catalase by statins inhibits endothelial senescence through the Akt pathway'''. ''Arterioscler Thromb Vasc Biol'', 2010; 30: 2205-2211.</ref>, hydrogen sulfide <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
Rong Suo, Zhan-Zhi Zhao, Zhi-Han Tang, Zhong Ren, Xing Liu, Lu-Shan Liu, Zuo Wang, Chao-Ke Tang, Dang-Heng Wei, Zhi-Sheng Jiang. '''Hydrogen sulfide prevents H2O2-induced senescence in human umbilical vein endothelial cells through SIRT1 activation'''. ''Mol Med Rep'', 2013; 7: 1865-1870.<br />
<br />
<br />
Meihua Zheng, Weili Qiao, Jie Cui, Lei Liu, Hong Liu, Zhirong Wang, Changdong Yan. '''Hydrogen sulfide delays nicotinamide-induced premature senescence via upregulation of SIRT1 in human umbilical vein endothelial cells'''. ''Mol Cell Biochem'', 2014; DOI: 10.1007/s11010-014-2046-y.</ref> and persimmon <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
Young A. Lee, Eun Ju Cho, Takako Yokozawa. '''Protective effect of persimmon (''Diospyros kaki'') peel proanthocyanidin against oxidative damage under H2O2-induced cellular senescence'''. ''Biol Pharm Bull'', 2008; 31: 1265-1269.</ref>. Polyphenols, including curcumin, can also modulate sirtuins <ref>Sangwoon Chung, Hongwei Yao, Samuel Caito, Jae-woong Hwang, Gnanapragasam Arunachalam, Irfan Rahman. '''Regulation of SIRT1 in cellular functions: role of polyphenols'''. ''Arch Biochem Biophys'', 2010; DOI: 10.1016/j.abb.2010.05.003.<br />
<br />
<br />
Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
T. Jayasena, A. Poljak, G. Smythe, N. Braidy, G. Munch, P. Sachdev. '''The role of polyphenols in the modulation of sirtuins and other pathways involved in Alzheimer’s disease'''. ''Ageing Res Rev'', 2013; DOI: 10.1016/j.arr.2013.06.003.</ref>. The most well-described and recognized natural compound stimulating SIRT1 is resveratrol. Activating SIRT1 with resveratrol supplementation increases lifespan and improves healthspan of several species <ref>Joseph A. Baur, Kevin J. Pearson, Nathan L. Price, Hamish A. Jamieson, Carles Lerin, Avash Kalra, Vinayakumar V. Prabhu, Joanne S. Allard, Buillermo Lepez-Lluch, Kaitlyn Lewis, Paul J. Pistell, Suresh Poosala, Kevin G. Becker, Olivier Boss, Dana Gwinn, Mingyi Wang, Sharan Ramaswamy, Kenneth W. Fishbein, Richard G. Spencer, Edward G. Lakatta, David Le Couteur, Reuben J. Shaw, Placido Navas, Pere Puigserver, Donald K. Ingram, Rafael de Cabo, David A. Sinclair. '''Resveratrol improves health and survival of mice on a high-calorie diet'''. ''Nature'', 2006; DOI: 10.1038/nature05354.<br />
<br />
<br />
Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
Laurent Mouchiroud, Laurent Molin, Nicolas Dalliere, Florence Solari. '''Life span extension by resveratrol, rapamycin, and metformin: The promise of dietary restriction mimetics for an healthy aging'''. ''BioFactors'', 2010; DOI: 10.1002/biof.127.</ref>. Natural anti-aging compounds also include quercetin, butein, fisetin, kaempferol, catechins, and proanthocyanidins <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
T. Jayasena, A. Poljak, G. Smythe, N. Braidy, G. Munch, P. Sachdev. '''The role of polyphenols in the modulation of sirtuins and other pathways involved in Alzheimer’s disease'''. ''Ageing Res Rev'', 2013; DOI: 10.1016/j.arr.2013.06.003.</ref>. Some Traditional Chinese Medicines have natural compounds with potent SIRT1-activating effects <ref>Wioleta Grabowska, Ewa Sikora, Anna Bielak-Zmijewska. '''Sirtuins, a promising target in slowing down the ageing process'''. ''Biogerontology'', 2017; DOI: 10.1007/s10522-017-9685-9.<br />
<br />
<br />
Yi Wang, Xxinying Liang, Yaqi Chen, Xiaoping Zhao. '''Screening SIRT1 activators from medicinal plants as bioactive compounds against oxidative damage in mitochondrial function'''. ''Oxid Med Cell Longev'', 2016; DOI: 10.1155/2016/4206392.</ref>. Activating sirtuins through the regulation of NAD+ levels offers an alternative method of stimulating sirtuin function.<br />
<br />
Functional food is a promising method for anti-aging interventions. Modulating SIRT1 function through consumption of these foods and dietary ingredients could represent a new way of counteracting the effects of aging.<br />
<br />
==Further reading==<br />
<br />
[[Category:Health]]<br />
<references /><br />
[[Category:Full index]]</div>Webadminhttps://www.nmnwiki.com/index.php?title=File:Sirtuin-2.jpg&diff=161File:Sirtuin-2.jpg2020-05-14T20:43:35Z<p>Webadmin: </p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=File:Nad.png&diff=159File:Nad.png2020-05-14T19:57:09Z<p>Webadmin: </p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=File:Nmn.gif&diff=157File:Nmn.gif2020-05-14T19:48:36Z<p>Webadmin: Webadmin moved page File:Nmn-structure.gif to File:Nmn.gif without leaving a redirect</p>
<hr />
<div></div>Webadminhttps://www.nmnwiki.com/index.php?title=Template:PageTitle&diff=155Template:PageTitle2020-05-14T19:23:41Z<p>Webadmin: Created page with "<includeonly>'''{{{1}}}'''</includeonly><noinclude>'''{{{1}}}'''</noinclude>"</p>
<hr />
<div><includeonly>[[{{{link}}}|'''{{{1}}}''']]</includeonly><noinclude>'''{{{1}}}'''</noinclude></div>Webadminhttps://www.nmnwiki.com/index.php?title=Module:Yesno&diff=152Module:Yesno2020-05-14T19:16:39Z<p>Webadmin: 1 revision imported</p>
<hr />
<div>-- Function allowing for consistent treatment of boolean-like wikitext input.<br />
-- It works similarly to the template {{yesno}}.<br />
<br />
return function (val, default)<br />
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you<br />
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the<br />
-- following line.<br />
val = type(val) == 'string' and val:lower() or val<br />
if val == nil then<br />
return nil<br />
elseif val == true <br />
or val == 'yes'<br />
or val == 'y'<br />
or val == 'true'<br />
or val == 't'<br />
or val == 'on'<br />
or tonumber(val) == 1<br />
then<br />
return true<br />
elseif val == false<br />
or val == 'no'<br />
or val == 'n'<br />
or val == 'false'<br />
or val == 'f'<br />
or val == 'off'<br />
or tonumber(val) == 0<br />
then<br />
return false<br />
else<br />
return default<br />
end<br />
end</div>Webadminhttps://www.nmnwiki.com/index.php?title=Module:Transclusion_count&diff=148Module:Transclusion count2020-05-14T19:16:38Z<p>Webadmin: 1 revision imported</p>
<hr />
<div>local p = {}<br />
<br />
function p.fetch(frame)<br />
local template = nil<br />
local return_value = nil<br />
<br />
-- Use demo parameter if it exists, otherswise use current template name<br />
local namespace = mw.title.getCurrentTitle().namespace<br />
if frame.args["demo"] and frame.args["demo"] ~= "" then<br />
template = frame.args["demo"]<br />
elseif namespace == 10 then -- Template namespace<br />
template = mw.title.getCurrentTitle().text<br />
elseif namespace == 828 then -- Module namespace<br />
template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text)<br />
end<br />
<br />
-- If in template or module namespace, look up count in /data<br />
if template ~= nil then<br />
namespace = mw.title.new(template, "Template").namespace<br />
if namespace == 10 or namespace == 828 then<br />
template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end<br />
local index = mw.ustring.sub(mw.title.new(template).text,1,1)<br />
local data = mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))<br />
return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])<br />
end<br />
end<br />
<br />
-- If database value doesn't exist, use value passed to template<br />
if return_value == nil and frame.args[1] ~= nil then<br />
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')<br />
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))<br />
end<br />
<br />
return return_value <br />
end<br />
<br />
return p</div>Webadminhttps://www.nmnwiki.com/index.php?title=Module:Transclusion_count/data/I&diff=150Module:Transclusion count/data/I2020-05-14T19:16:38Z<p>Webadmin: 1 revision imported</p>
<hr />
<div>return {<br />
["IAAF_name"] = 2700,<br />
["IAST"] = 5800,<br />
["IBDB_name"] = 8400,<br />
["ICD10"] = 5000,<br />
["ICD9"] = 4800,<br />
["IDN"] = 3000,<br />
["IMDB_name"] = 2400,<br />
["IMDB_title"] = 3200,<br />
["IMDb_episode"] = 8000,<br />
["IMDb_name"] = 134000,<br />
["IMDb_title"] = 165000,<br />
["IMO_Number"] = 3700,<br />
["IMSLP"] = 6700,<br />
["IMSLP2"] = 2200,<br />
["IND"] = 6900,<br />
["INR"] = 4800,<br />
["INRConvert"] = 4500,<br />
["INRConvert/CurrentRate"] = 4500,<br />
["INRConvert/USD"] = 4500,<br />
["INRConvert/out"] = 4500,<br />
["INS"] = 2000,<br />
["IOC_profile"] = 6400,<br />
["IP"] = 2100,<br />
["IPA"] = 89000,<br />
["IPA-all"] = 2600,<br />
["IPA-de"] = 4800,<br />
["IPA-es"] = 7200,<br />
["IPA-fr"] = 8800,<br />
["IPA-it"] = 5300,<br />
["IPA-nl"] = 2800,<br />
["IPA-pl"] = 2600,<br />
["IPA-pt"] = 3200,<br />
["IPA-ru"] = 2300,<br />
["IPA-sh"] = 2800,<br />
["IPA-sl"] = 6600,<br />
["IPA-th"] = 2400,<br />
["IPA_audio_link"] = 7800,<br />
["IPAc-cmn"] = 2300,<br />
["IPAc-en"] = 39000,<br />
["IPAc-pl"] = 53000,<br />
["IPSummary"] = 68000,<br />
["IP_summary"] = 69000,<br />
["IPsock"] = 30000,<br />
["IPtalk"] = 26000,<br />
["IPuser"] = 6100,<br />
["IPvandal"] = 13000,<br />
["IRC"] = 10000,<br />
["IRL"] = 4900,<br />
["IRN"] = 3100,<br />
["ISBN"] = 438000,<br />
["ISBNT"] = 31000,<br />
["ISO_15924/script-example-character"] = 2300,<br />
["ISO_15924/wp-name"] = 2400,<br />
["ISO_15924/wp-name/label"] = 2300,<br />
["ISO_15924_code"] = 2900,<br />
["ISO_3166_code"] = 105000,<br />
["ISO_3166_name"] = 14000,<br />
["ISP"] = 20000,<br />
["ISP_test"] = 5600,<br />
["ISR"] = 3900,<br />
["ISSN"] = 9800,<br />
["ISSN_link"] = 27000,<br />
["ISTAT"] = 8100,<br />
["ISU_figure_skater"] = 2300,<br />
["ITA"] = 15000,<br />
["ITF"] = 3800,<br />
["ITF_profile"] = 6600,<br />
["ITIS"] = 4100,<br />
["ITN_talk"] = 6300,<br />
["ITN_talk/date"] = 6300,<br />
["IUCN_banner"] = 13000,<br />
["I_sup"] = 3800,<br />
["Iaaf_name"] = 8500,<br />
["Ice_hockey"] = 21000,<br />
["Ice_hockey_stats"] = 12000,<br />
["Icehockeystats"] = 9500,<br />
["Icon"] = 386000,<br />
["If"] = 108000,<br />
["If_between"] = 3400,<br />
["If_both"] = 5800,<br />
["If_either"] = 4700,<br />
["If_empty"] = 1970000,<br />
["If_first_display_both"] = 30000,<br />
["If_in_page"] = 6800,<br />
["If_preview"] = 52000,<br />
["If_then_show"] = 193000,<br />
["Ifeq"] = 2600,<br />
["Ifexist_not_redirect"] = 392000,<br />
["Ifnotempty"] = 12000,<br />
["Ifnumber"] = 19000,<br />
["Ifsubst"] = 58000,<br />
["Ih"] = 6900,<br />
["Ill"] = 38000,<br />
["Illm"] = 5700,<br />
["Image_frame"] = 2000,<br />
["Image_label"] = 4300,<br />
["Image_label_begin"] = 3600,<br />
["Image_label_end"] = 3200,<br />
["Image_label_small"] = 2500,<br />
["Image_other"] = 332000,<br />
["Image_requested"] = 169000,<br />
["Image_requested/Category_helper"] = 169000,<br />
["Imbox"] = 890000,<br />
["Imdb_episode"] = 2500,<br />
["Imdb_name"] = 7100,<br />
["Imdb_title"] = 13000,<br />
["Importance"] = 4930000,<br />
["Importance/colour"] = 4960000,<br />
["Importance_mask"] = 7520000,<br />
["Improve_categories"] = 3500,<br />
["In_class"] = 3500,<br />
["In_lang"] = 323000,<br />
["In_title"] = 11000,<br />
["Inactive_WikiProject_banner"] = 137000,<br />
["Inactive_userpage_blanked"] = 4000,<br />
["Include-USGov"] = 30000,<br />
["Incomplete_list"] = 18000,<br />
["Increase"] = 32000,<br />
["Incumbent_pope"] = 4200,<br />
["Independent/meta/color"] = 5500,<br />
["Independent_(US)/meta/color"] = 2500,<br />
["Independent_(politician)/meta/color"] = 12000,<br />
["Independent_(politician)/meta/shortname"] = 10000,<br />
["Independent_politician/meta/color"] = 17000,<br />
["Independent_politician/meta/shortname"] = 14000,<br />
["IndexFungorum"] = 2600,<br />
["Indian_English"] = 3200,<br />
["Indian_National_Congress/meta/color"] = 3300,<br />
["Indian_National_Congress/meta/shortname"] = 2500,<br />
["Indian_Railways_color"] = 2800,<br />
["Indian_Railways_style"] = 2800,<br />
["Indian_Rupee"] = 8100,<br />
["Indian_railway_code"] = 2400,<br />
["Inflation"] = 12000,<br />
["Inflation-fn"] = 4400,<br />
["Inflation-year"] = 3200,<br />
["Inflation/IN/startyear"] = 4500,<br />
["Inflation/UK"] = 3100,<br />
["Inflation/UK/dataset"] = 3100,<br />
["Inflation/UK/startyear"] = 3100,<br />
["Inflation/US"] = 7600,<br />
["Inflation/US/dataset"] = 7600,<br />
["Inflation/US/startyear"] = 7600,<br />
["Inflation/fn"] = 4600,<br />
["Inflation/year"] = 16000,<br />
["Info"] = 7600,<br />
["Infobox"] = 3490000,<br />
["Infobox3cols"] = 249000,<br />
["Infobox_AFL_biography"] = 14000,<br />
["Infobox_Aircraft_Begin"] = 9300,<br />
["Infobox_Aircraft_Type"] = 8400,<br />
["Infobox_Athletics_Championships"] = 2200,<br />
["Infobox_Australian_place"] = 14000,<br />
["Infobox_CFL_biography"] = 6100,<br />
["Infobox_CFL_biography/position"] = 6000,<br />
["Infobox_Canada_electoral_district"] = 2200,<br />
["Infobox_Chinese"] = 15000,<br />
["Infobox_Chinese/Footer"] = 8800,<br />
["Infobox_Chinese/Header"] = 8800,<br />
["Infobox_Chinese/Korean"] = 13000,<br />
["Infobox_Christian_leader"] = 14000,<br />
["Infobox_Company"] = 2200,<br />
["Infobox_Congressman"] = 3000,<br />
["Infobox_Election"] = 3800,<br />
["Infobox_Football_club_season"] = 2200,<br />
["Infobox_French_commune"] = 37000,<br />
["Infobox_GAA_player"] = 3500,<br />
["Infobox_GB_station"] = 2200,<br />
["Infobox_Gaelic_Athletic_Association_player"] = 4200,<br />
["Infobox_German_location"] = 13000,<br />
["Infobox_Government_agency"] = 3000,<br />
["Infobox_Greek_Dimos"] = 2700,<br />
["Infobox_Indian_politician"] = 2600,<br />
["Infobox_Italian_comune"] = 8100,<br />
["Infobox_Korean_name"] = 13000,<br />
["Infobox_Korean_name/categories"] = 13000,<br />
["Infobox_MLB_yearly"] = 3000,<br />
["Infobox_Museum"] = 2600,<br />
["Infobox_NCAA_team_season"] = 25000,<br />
["Infobox_NCAA_team_season/link"] = 27000,<br />
["Infobox_NCAA_team_season/succession"] = 27000,<br />
["Infobox_NFL_biography"] = 23000,<br />
["Infobox_NFL_player"] = 14000,<br />
["Infobox_NFL_season"] = 3400,<br />
["Infobox_NFL_team_season"] = 3700,<br />
["Infobox_NRHP"] = 70000,<br />
["Infobox_NRHP/conv"] = 17000,<br />
["Infobox_NRHP/locmapin2region"] = 64000,<br />
["Infobox_Newspaper"] = 3200,<br />
["Infobox_Officeholder"] = 13000,<br />
["Infobox_Olympic_event"] = 6500,<br />
["Infobox_Olympic_event/games_text"] = 6500,<br />
["Infobox_Organization"] = 4300,<br />
["Infobox_Paralympic_event"] = 2100,<br />
["Infobox_Paralympic_event/games_text"] = 2100,<br />
["Infobox_Person"] = 3000,<br />
["Infobox_Politician"] = 5500,<br />
["Infobox_Radio_station"] = 5500,<br />
["Infobox_Romanian_subdivision"] = 3200,<br />
["Infobox_Russian_district"] = 2000,<br />
["Infobox_Russian_inhabited_locality"] = 3400,<br />
["Infobox_SCOTUS_case"] = 3500,<br />
["Infobox_SCOTUS_case/courts"] = 3500,<br />
["Infobox_School"] = 4300,<br />
["Infobox_Settlement"] = 6600,<br />
["Infobox_Software"] = 2800,<br />
["Infobox_State_Representative"] = 3000,<br />
["Infobox_State_Senator"] = 2100,<br />
["Infobox_Swiss_town"] = 2800,<br />
["Infobox_TV_channel"] = 3400,<br />
["Infobox_U.S._county"] = 3000,<br />
["Infobox_U.S._county/district"] = 3000,<br />
["Infobox_UK_disused_station"] = 4800,<br />
["Infobox_UK_place"] = 24000,<br />
["Infobox_UK_place/NoDialCode"] = 7200,<br />
["Infobox_UK_place/NoPostCode"] = 2900,<br />
["Infobox_UK_place/dist"] = 2300,<br />
["Infobox_UK_place/local"] = 24000,<br />
["Infobox_UN_resolution"] = 2200,<br />
["Infobox_University"] = 4700,<br />
["Infobox_Wikipedia_user"] = 7200,<br />
["Infobox_academic"] = 5700,<br />
["Infobox_aircraft_begin"] = 14000,<br />
["Infobox_aircraft_type"] = 12000,<br />
["Infobox_airline"] = 4300,<br />
["Infobox_airport"] = 15000,<br />
["Infobox_airport/datatable"] = 15000,<br />
["Infobox_album"] = 155000,<br />
["Infobox_album/color"] = 175000,<br />
["Infobox_album/link"] = 155000,<br />
["Infobox_anatomy"] = 4400,<br />
["Infobox_ancient_site"] = 3800,<br />
["Infobox_animanga/Footer"] = 5500,<br />
["Infobox_animanga/Header"] = 5500,<br />
["Infobox_animanga/Print"] = 4200,<br />
["Infobox_animanga/Video"] = 4000,<br />
["Infobox_architect"] = 2900,<br />
["Infobox_artist"] = 23000,<br />
["Infobox_artist_discography"] = 5100,<br />
["Infobox_artwork"] = 8200,<br />
["Infobox_athlete"] = 4600,<br />
["Infobox_attraction/status"] = 2700,<br />
["Infobox_automobile"] = 7300,<br />
["Infobox_award"] = 7500,<br />
["Infobox_badminton_player"] = 2600,<br />
["Infobox_baseball_biography"] = 24000,<br />
["Infobox_baseball_biography/style"] = 24000,<br />
["Infobox_basketball_biography"] = 17000,<br />
["Infobox_basketball_biography/style"] = 17000,<br />
["Infobox_basketball_club"] = 2600,<br />
["Infobox_bilateral_relations"] = 3600,<br />
["Infobox_body_of_water"] = 15000,<br />
["Infobox_book"] = 45000,<br />
["Infobox_boxer"] = 4900,<br />
["Infobox_bridge"] = 5200,<br />
["Infobox_broadcast"] = 3700,<br />
["Infobox_building"] = 21000,<br />
["Infobox_character"] = 7200,<br />
["Infobox_chess_biography"] = 2600,<br />
["Infobox_chess_player"] = 2400,<br />
["Infobox_church"] = 12000,<br />
["Infobox_church/denomination"] = 12000,<br />
["Infobox_church/font_color"] = 12000,<br />
["Infobox_civilian_attack"] = 3800,<br />
["Infobox_college_coach"] = 10000,<br />
["Infobox_college_sports_team_season"] = 27000,<br />
["Infobox_college_sports_team_season/link"] = 27000,<br />
["Infobox_college_sports_team_season/name"] = 27000,<br />
["Infobox_college_sports_team_season/succession"] = 27000,<br />
["Infobox_college_sports_team_season/team"] = 27000,<br />
["Infobox_comic_book_title"] = 2700,<br />
["Infobox_comics_character"] = 3800,<br />
["Infobox_comics_creator"] = 3300,<br />
["Infobox_company"] = 75000,<br />
["Infobox_concert"] = 3500,<br />
["Infobox_constituency"] = 3800,<br />
["Infobox_country"] = 5000,<br />
["Infobox_country/formernext"] = 4800,<br />
["Infobox_country/imagetable"] = 4100,<br />
["Infobox_country/multirow"] = 6500,<br />
["Infobox_country/status_text"] = 2300,<br />
["Infobox_country_at_games"] = 13000,<br />
["Infobox_country_at_games/core"] = 13000,<br />
["Infobox_court_case"] = 3800,<br />
["Infobox_court_case/images"] = 3800,<br />
["Infobox_cricketer"] = 26000,<br />
["Infobox_cricketer/career"] = 26000,<br />
["Infobox_cricketer/national_side"] = 7000,<br />
["Infobox_criminal"] = 4100,<br />
["Infobox_cultivar"] = 2200,<br />
["Infobox_cycling_race_report"] = 4000,<br />
["Infobox_cyclist"] = 14000,<br />
["Infobox_dam"] = 3900,<br />
["Infobox_designation_list"] = 6000,<br />
["Infobox_designation_list/entry"] = 5900,<br />
["Infobox_dim"] = 5300,<br />
["Infobox_dim/core"] = 5300,<br />
["Infobox_diocese"] = 3700,<br />
["Infobox_drug"] = 8400,<br />
["Infobox_drug/chemical_formula"] = 8400,<br />
["Infobox_drug/formatATC"] = 8300,<br />
["Infobox_drug/formatCASnumber"] = 8400,<br />
["Infobox_drug/formatChEBI"] = 8400,<br />
["Infobox_drug/formatChEMBL"] = 8400,<br />
["Infobox_drug/formatChemDBNIAID"] = 8400,<br />
["Infobox_drug/formatChemSpider"] = 8400,<br />
["Infobox_drug/formatCompTox"] = 8400,<br />
["Infobox_drug/formatDrugBank"] = 8400,<br />
["Infobox_drug/formatIUPHARBPS"] = 8400,<br />
["Infobox_drug/formatJmol"] = 8400,<br />
["Infobox_drug/formatKEGG"] = 8400,<br />
["Infobox_drug/formatPDBligand"] = 7900,<br />
["Infobox_drug/formatPubChemCID"] = 8400,<br />
["Infobox_drug/formatPubChemSID"] = 8400,<br />
["Infobox_drug/formatUNII"] = 8400,<br />
["Infobox_drug/legal_status"] = 8500,<br />
["Infobox_drug/licence"] = 8500,<br />
["Infobox_drug/maintenance_categories"] = 8400,<br />
["Infobox_drug/pregnancy_category"] = 8500,<br />
["Infobox_drug/title"] = 8400,<br />
["Infobox_election"] = 19000,<br />
["Infobox_election/row"] = 19000,<br />
["Infobox_election/shortname"] = 18000,<br />
["Infobox_enzyme"] = 5100,<br />
["Infobox_ethnic_group"] = 6300,<br />
["Infobox_event"] = 3200,<br />
["Infobox_figure_skater"] = 3900,<br />
["Infobox_film"] = 140000,<br />
["Infobox_film_awards"] = 2100,<br />
["Infobox_film_awards/link"] = 2100,<br />
["Infobox_film_awards/style"] = 2100,<br />
["Infobox_food"] = 5900,<br />
["Infobox_football_biography"] = 172000,<br />
["Infobox_football_club"] = 24000,<br />
["Infobox_football_club_season"] = 15000,<br />
["Infobox_football_league"] = 2200,<br />
["Infobox_football_league_season"] = 15000,<br />
["Infobox_football_match"] = 4700,<br />
["Infobox_football_tournament_season"] = 5800,<br />
["Infobox_former_subdivision"] = 2700,<br />
["Infobox_game_score"] = 3100,<br />
["Infobox_gene"] = 13000,<br />
["Infobox_given_name"] = 3600,<br />
["Infobox_golfer"] = 3700,<br />
["Infobox_golfer/highest_ranking"] = 3700,<br />
["Infobox_government_agency"] = 8200,<br />
["Infobox_gridiron_football_person"] = 4300,<br />
["Infobox_gridiron_football_person/position"] = 6000,<br />
["Infobox_gymnast"] = 2600,<br />
["Infobox_handball_biography"] = 4000,<br />
["Infobox_historic_site"] = 8500,<br />
["Infobox_horseraces"] = 2400,<br />
["Infobox_hospital"] = 5000,<br />
["Infobox_hospital/care_system"] = 5000,<br />
["Infobox_hospital/lists"] = 5000,<br />
["Infobox_ice_hockey_player"] = 17000,<br />
["Infobox_international_football_competition"] = 4700,<br />
["Infobox_islands"] = 7600,<br />
["Infobox_islands/area"] = 8000,<br />
["Infobox_islands/density"] = 8000,<br />
["Infobox_islands/length"] = 7600,<br />
["Infobox_journal"] = 8800,<br />
["Infobox_journal/Abbreviation_search"] = 8700,<br />
["Infobox_journal/Bluebook_check"] = 8500,<br />
["Infobox_journal/Former_check"] = 8500,<br />
["Infobox_journal/ISO_4_check"] = 8500,<br />
["Infobox_journal/ISSN-eISSN"] = 8500,<br />
["Infobox_journal/Indexing_search"] = 8600,<br />
["Infobox_journal/MathSciNet_check"] = 8500,<br />
["Infobox_journal/NLM_check"] = 8500,<br />
["Infobox_journal/frequency"] = 7800,<br />
["Infobox_judge"] = 4200,<br />
["Infobox_lake"] = 10000,<br />
["Infobox_language"] = 8900,<br />
["Infobox_language/family-color"] = 10000,<br />
["Infobox_language/genetic"] = 6200,<br />
["Infobox_language/linguistlist"] = 8900,<br />
["Infobox_language/ref"] = 6800,<br />
["Infobox_legislature"] = 2400,<br />
["Infobox_lighthouse"] = 2500,<br />
["Infobox_locomotive"] = 4100,<br />
["Infobox_magazine"] = 6400,<br />
["Infobox_manner_of_address"] = 3100,<br />
["Infobox_mapframe"] = 106000,<br />
["Infobox_martial_artist"] = 4700,<br />
["Infobox_martial_artist/record"] = 4700,<br />
["Infobox_medal_templates"] = 346000,<br />
["Infobox_medical_condition"] = 9500,<br />
["Infobox_medical_condition_(new)"] = 8100,<br />
["Infobox_military_award"] = 2200,<br />
["Infobox_military_conflict"] = 18000,<br />
["Infobox_military_installation"] = 8300,<br />
["Infobox_military_person"] = 36000,<br />
["Infobox_military_structure"] = 2600,<br />
["Infobox_military_unit"] = 23000,<br />
["Infobox_model"] = 2300,<br />
["Infobox_monarch"] = 2500,<br />
["Infobox_mountain"] = 25000,<br />
["Infobox_mountain_range"] = 2400,<br />
["Infobox_museum"] = 8400,<br />
["Infobox_musical_artist"] = 111000,<br />
["Infobox_musical_artist/color"] = 111000,<br />
["Infobox_musical_artist/hCard_class"] = 284000,<br />
["Infobox_musical_artist/tracking"] = 99000,<br />
["Infobox_name"] = 6400,<br />
["Infobox_name_module"] = 5800,<br />
["Infobox_newspaper"] = 8500,<br />
["Infobox_nobility"] = 3800,<br />
["Infobox_noble"] = 5500,<br />
["Infobox_officeholder"] = 157000,<br />
["Infobox_officeholder/office"] = 160000,<br />
["Infobox_official_post"] = 5800,<br />
["Infobox_organization"] = 27000,<br />
["Infobox_pageant_titleholder"] = 2800,<br />
["Infobox_park"] = 5600,<br />
["Infobox_person"] = 365000,<br />
["Infobox_person/Wikidata"] = 2300,<br />
["Infobox_person/height"] = 215000,<br />
["Infobox_person/length"] = 6300,<br />
["Infobox_person/weight"] = 69000,<br />
["Infobox_philosopher"] = 2800,<br />
["Infobox_planet"] = 4500,<br />
["Infobox_play"] = 2700,<br />
["Infobox_political_party"] = 11000,<br />
["Infobox_politician"] = 2400,<br />
["Infobox_power_station"] = 2500,<br />
["Infobox_prepared_food"] = 4200,<br />
["Infobox_professional_wrestler"] = 3700,<br />
["Infobox_professional_wrestling_event"] = 2100,<br />
["Infobox_protected_area"] = 12000,<br />
["Infobox_protein_family"] = 2100,<br />
["Infobox_publisher"] = 2200,<br />
["Infobox_racehorse"] = 5000,<br />
["Infobox_racing_driver"] = 2800,<br />
["Infobox_radio_station"] = 22000,<br />
["Infobox_rail"] = 2400,<br />
["Infobox_rail_line"] = 6200,<br />
["Infobox_rail_line/tracking"] = 6200,<br />
["Infobox_rail_service"] = 2600,<br />
["Infobox_record_label"] = 3800,<br />
["Infobox_recurring_event"] = 5400,<br />
["Infobox_religious_biography"] = 3500,<br />
["Infobox_religious_building"] = 9600,<br />
["Infobox_religious_building/color"] = 13000,<br />
["Infobox_requested"] = 3000,<br />
["Infobox_river"] = 26000,<br />
["Infobox_river/calcunit"] = 26000,<br />
["Infobox_river/discharge"] = 26000,<br />
["Infobox_river/row-style"] = 26000,<br />
["Infobox_river/source"] = 26000,<br />
["Infobox_road"] = 23000,<br />
["Infobox_road/banner"] = 13000,<br />
["Infobox_road/browselinks/USA"] = 14000,<br />
["Infobox_road/hide/cities"] = 2000,<br />
["Infobox_road/maint/USA"] = 13000,<br />
["Infobox_road/meta/colors"] = 2200,<br />
["Infobox_road/meta/errors"] = 23000,<br />
["Infobox_road/meta/mask/category"] = 23000,<br />
["Infobox_road/meta/mask/country"] = 23000,<br />
["Infobox_road/meta/mask/subtype1"] = 13000,<br />
["Infobox_road/meta/mask/subtype2"] = 12000,<br />
["Infobox_road/name/USA"] = 13000,<br />
["Infobox_road/name/USA/StateName"] = 6700,<br />
["Infobox_road/shield/USA"] = 13000,<br />
["Infobox_road/shieldmain/USA"] = 13000,<br />
["Infobox_rockunit"] = 6100,<br />
["Infobox_royalty"] = 18000,<br />
["Infobox_royalty/short_description"] = 18000,<br />
["Infobox_rugby_biography"] = 13000,<br />
["Infobox_rugby_biography/correct_date"] = 13000,<br />
["Infobox_rugby_league_biography"] = 8500,<br />
["Infobox_rugby_league_biography/PLAYER"] = 8500,<br />
["Infobox_rugby_team"] = 2600,<br />
["Infobox_saint"] = 4200,<br />
["Infobox_school"] = 38000,<br />
["Infobox_school/short_description"] = 38000,<br />
["Infobox_school_district"] = 3100,<br />
["Infobox_scientist"] = 37000,<br />
["Infobox_service_record"] = 2400,<br />
["Infobox_settlement"] = 525000,<br />
["Infobox_settlement/areadisp"] = 206000,<br />
["Infobox_settlement/columns"] = 82000,<br />
["Infobox_settlement/densdisp"] = 392000,<br />
["Infobox_settlement/impus"] = 76000,<br />
["Infobox_settlement/lengthdisp"] = 152000,<br />
["Infobox_settlement/link"] = 82000,<br />
["Infobox_settlement/metric"] = 184000,<br />
["Infobox_settlement/pref"] = 260000,<br />
["Infobox_ship_begin"] = 36000,<br />
["Infobox_ship_career"] = 32000,<br />
["Infobox_ship_characteristics"] = 36000,<br />
["Infobox_ship_class_overview"] = 3400,<br />
["Infobox_ship_image"] = 35000,<br />
["Infobox_shopping_mall"] = 3100,<br />
["Infobox_skier"] = 2400,<br />
["Infobox_soap_character"] = 3000,<br />
["Infobox_software"] = 13000,<br />
["Infobox_software/simple"] = 14000,<br />
["Infobox_song"] = 67000,<br />
["Infobox_song/color"] = 67000,<br />
["Infobox_song/link"] = 67000,<br />
["Infobox_spaceflight"] = 3100,<br />
["Infobox_sports_competition_event"] = 11000,<br />
["Infobox_sports_competition_event/medalrow"] = 7400,<br />
["Infobox_sports_league"] = 3200,<br />
["Infobox_sports_season"] = 4000,<br />
["Infobox_sportsperson"] = 90000,<br />
["Infobox_stadium"] = 5700,<br />
["Infobox_state_representative"] = 3600,<br />
["Infobox_station"] = 40000,<br />
["Infobox_street"] = 2400,<br />
["Infobox_swimmer"] = 8500,<br />
["Infobox_television"] = 49000,<br />
["Infobox_television_channel"] = 5800,<br />
["Infobox_television_episode"] = 11000,<br />
["Infobox_television_season"] = 6500,<br />
["Infobox_tennis_biography"] = 7600,<br />
["Infobox_tennis_tournament_event"] = 15000,<br />
["Infobox_tennis_tournament_year"] = 7700,<br />
["Infobox_tennis_tournament_year/color"] = 23000,<br />
["Infobox_tennis_tournament_year/footer"] = 23000,<br />
["Infobox_union"] = 2100,<br />
["Infobox_university"] = 25000,<br />
["Infobox_user"] = 2400,<br />
["Infobox_venue"] = 16000,<br />
["Infobox_video_game"] = 24000,<br />
["Infobox_volleyball_biography"] = 4800,<br />
["Infobox_weapon"] = 6500,<br />
["Infobox_website"] = 7200,<br />
["Infobox_writer"] = 31000,<br />
["Information"] = 138000,<br />
["Inline"] = 2700,<br />
["Input_link"] = 33000,<br />
["Inputbox"] = 9800,<br />
["Instagram"] = 4600,<br />
["Interlanguage_link"] = 70000,<br />
["Interlanguage_link_multi"] = 22000,<br />
["Internet_Archive_author"] = 18000,<br />
["Internet_Archive_film"] = 2200,<br />
["Intitle"] = 7000,<br />
["Ipsock"] = 13000,<br />
["Iptalk"] = 22000,<br />
["IranCensus2006"] = 63000,<br />
["IranNCSGN"] = 3700,<br />
["Iran_Census_2006"] = 63000,<br />
["Irish_place_name"] = 2200,<br />
["IsValidPageName"] = 5500,<br />
["Is_article"] = 3900,<br />
["Is_empty"] = 4200,<br />
["Is_interwiki_link"] = 2500,<br />
["Is_italic_taxon"] = 281000,<br />
["Isbn"] = 3500,<br />
["Isfdb_name"] = 3800,<br />
["Isfdb_title"] = 4100,<br />
["Isnumeric"] = 147000,<br />
["Iso2country"] = 20000,<br />
["Iso2country/article"] = 19000,<br />
["Iso2country/data"] = 20000,<br />
["Issubst"] = 76000,<br />
["Isu_name"] = 2200,<br />
["Italic_title"] = 905000,<br />
["Italic_title_prefixed"] = 8200,<br />
["Italics_after"] = 8200,<br />
["Italictitle"] = 5500,<br />
["Ivm"] = 5600,<br />
["Ivm/styles.css"] = 5600,<br />
["Ivmbox"] = 103000,<br />
["Ivory_messagebox"] = 103000,<br />
["Module:I18n/complex_date"] = 2700,<br />
["Module:I18n/date"] = 2700,<br />
["Module:IPA_symbol"] = 2800,<br />
["Module:IPA_symbol/data"] = 2800,<br />
["Module:IPAc-en"] = 39000,<br />
["Module:IPAc-en/data"] = 39000,<br />
["Module:IPAc-en/phonemes"] = 39000,<br />
["Module:IPAc-en/pronunciation"] = 39000,<br />
["Module:IPAddress"] = 23000,<br />
["Module:ISO_3166"] = 559000,<br />
["Module:ISO_3166/data/AT"] = 2400,<br />
["Module:ISO_3166/data/BA"] = 3200,<br />
["Module:ISO_3166/data/CA"] = 2500,<br />
["Module:ISO_3166/data/DE"] = 14000,<br />
["Module:ISO_3166/data/FR"] = 38000,<br />
["Module:ISO_3166/data/GR"] = 2800,<br />
["Module:ISO_3166/data/IN"] = 24000,<br />
["Module:ISO_3166/data/National"] = 559000,<br />
["Module:ISO_3166/data/RS"] = 3200,<br />
["Module:ISO_3166/data/RU"] = 22000,<br />
["Module:ISO_3166/data/US"] = 78000,<br />
["Module:ISO_639_name"] = 4700,<br />
["Module:ISOdate"] = 2700,<br />
["Module:Icon"] = 386000,<br />
["Module:Icon/data"] = 386000,<br />
["Module:If_empty"] = 1970000,<br />
["Module:If_in_page"] = 6800,<br />
["Module:If_preview"] = 52000,<br />
["Module:Infobox"] = 3490000,<br />
["Module:Infobox/dates"] = 56000,<br />
["Module:Infobox3cols"] = 261000,<br />
["Module:InfoboxImage"] = 3650000,<br />
["Module:Infobox_body_of_water_tracking"] = 15000,<br />
["Module:Infobox_civil_style"] = 3000,<br />
["Module:Infobox_cyclist_tracking"] = 14000,<br />
["Module:Infobox_gene"] = 13000,<br />
["Module:Infobox_mapframe"] = 106000,<br />
["Module:Infobox_military_conflict"] = 18000,<br />
["Module:Infobox_military_conflict/styles.css"] = 18000,<br />
["Module:Infobox_multi-lingual_name"] = 15000,<br />
["Module:Infobox_multi-lingual_name/data"] = 15000,<br />
["Module:Infobox_power_station"] = 2500,<br />
["Module:Infobox_road"] = 23000,<br />
["Module:Infobox_road/color"] = 23000,<br />
["Module:Infobox_road/length"] = 23000,<br />
["Module:Infobox_road/locations"] = 23000,<br />
["Module:Infobox_road/map"] = 23000,<br />
["Module:Infobox_road/meta/mask/country"] = 15000,<br />
["Module:Infobox_television_disambiguation_check"] = 54000,<br />
["Module:Infobox_television_season_disambiguation_check"] = 7100,<br />
["Module:Infobox_television_season_name"] = 6500,<br />
["Module:Internet_Archive"] = 18000,<br />
["Module:IrelandByCountyCatNav"] = 2500,<br />
["Module:IsValidPageName"] = 5500,<br />
["Module:Is_infobox_in_lead"] = 211000,<br />
["Module:Italic_title"] = 945000,<br />
["Module:Iucn"] = 29000,<br />
}</div>Webadminhttps://www.nmnwiki.com/index.php?title=Module:TableTools&diff=144Module:TableTools2020-05-14T19:16:37Z<p>Webadmin: 1 revision imported</p>
<hr />
<div>--[[<br />
------------------------------------------------------------------------------------<br />
-- TableTools --<br />
-- --<br />
-- This module includes a number of functions for dealing with Lua tables. --<br />
-- It is a meta-module, meant to be called from other Lua modules, and should --<br />
-- not be called directly from #invoke. --<br />
------------------------------------------------------------------------------------<br />
--]]<br />
<br />
local libraryUtil = require('libraryUtil')<br />
<br />
local p = {}<br />
<br />
-- Define often-used variables and functions.<br />
local floor = math.floor<br />
local infinity = math.huge<br />
local checkType = libraryUtil.checkType<br />
local checkTypeMulti = libraryUtil.checkTypeMulti<br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- isPositiveInteger<br />
--<br />
-- This function returns true if the given value is a positive integer, and false<br />
-- if not. Although it doesn't operate on tables, it is included here as it is<br />
-- useful for determining whether a given table key is in the array part or the<br />
-- hash part of a table.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
function p.isPositiveInteger(v)<br />
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity<br />
end<br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- isNan<br />
--<br />
-- This function returns true if the given number is a NaN value, and false<br />
-- if not. Although it doesn't operate on tables, it is included here as it is<br />
-- useful for determining whether a value can be a valid table key. Lua will<br />
-- generate an error if a NaN is used as a table key.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
function p.isNan(v)<br />
return type(v) == 'number' and tostring(v) == '-nan'<br />
end<br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- shallowClone<br />
--<br />
-- This returns a clone of a table. The value returned is a new table, but all<br />
-- subtables and functions are shared. Metamethods are respected, but the returned<br />
-- table will have no metatable of its own.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
function p.shallowClone(t)<br />
local ret = {}<br />
for k, v in pairs(t) do<br />
ret[k] = v<br />
end<br />
return ret<br />
end<br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- removeDuplicates<br />
--<br />
-- This removes duplicate values from an array. Non-positive-integer keys are<br />
-- ignored. The earliest value is kept, and all subsequent duplicate values are<br />
-- removed, but otherwise the array order is unchanged.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
function p.removeDuplicates(t)<br />
checkType('removeDuplicates', 1, t, 'table')<br />
local isNan = p.isNan<br />
local ret, exists = {}, {}<br />
for i, v in ipairs(t) do<br />
if isNan(v) then<br />
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.<br />
ret[#ret + 1] = v<br />
else<br />
if not exists[v] then<br />
ret[#ret + 1] = v<br />
exists[v] = true<br />
end<br />
end <br />
end<br />
return ret<br />
end <br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- numKeys<br />
--<br />
-- This takes a table and returns an array containing the numbers of any numerical<br />
-- keys that have non-nil values, sorted in numerical order.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
function p.numKeys(t)<br />
checkType('numKeys', 1, t, 'table')<br />
local isPositiveInteger = p.isPositiveInteger<br />
local nums = {}<br />
for k, v in pairs(t) do<br />
if isPositiveInteger(k) then<br />
nums[#nums + 1] = k<br />
end<br />
end<br />
table.sort(nums)<br />
return nums<br />
end<br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- affixNums<br />
--<br />
-- This takes a table and returns an array containing the numbers of keys with the<br />
-- specified prefix and suffix. For example, for the table<br />
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will<br />
-- return {1, 3, 6}.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
function p.affixNums(t, prefix, suffix)<br />
checkType('affixNums', 1, t, 'table')<br />
checkType('affixNums', 2, prefix, 'string', true)<br />
checkType('affixNums', 3, suffix, 'string', true)<br />
<br />
local function cleanPattern(s)<br />
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.<br />
s = s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')<br />
return s<br />
end<br />
<br />
prefix = prefix or ''<br />
suffix = suffix or ''<br />
prefix = cleanPattern(prefix)<br />
suffix = cleanPattern(suffix)<br />
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'<br />
<br />
local nums = {}<br />
for k, v in pairs(t) do<br />
if type(k) == 'string' then <br />
local num = mw.ustring.match(k, pattern)<br />
if num then<br />
nums[#nums + 1] = tonumber(num)<br />
end<br />
end<br />
end<br />
table.sort(nums)<br />
return nums<br />
end<br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- numData<br />
--<br />
-- Given a table with keys like ("foo1", "bar1", "foo2", "baz2"), returns a table<br />
-- of subtables in the format <br />
-- { [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} }<br />
-- Keys that don't end with an integer are stored in a subtable named "other".<br />
-- The compress option compresses the table so that it can be iterated over with<br />
-- ipairs.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
function p.numData(t, compress)<br />
checkType('numData', 1, t, 'table')<br />
checkType('numData', 2, compress, 'boolean', true)<br />
local ret = {}<br />
for k, v in pairs(t) do<br />
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')<br />
if num then<br />
num = tonumber(num)<br />
local subtable = ret[num] or {}<br />
if prefix == '' then<br />
-- Positional parameters match the blank string; put them at the start of the subtable instead.<br />
prefix = 1<br />
end<br />
subtable[prefix] = v<br />
ret[num] = subtable<br />
else<br />
local subtable = ret.other or {}<br />
subtable[k] = v<br />
ret.other = subtable<br />
end<br />
end<br />
if compress then<br />
local other = ret.other<br />
ret = p.compressSparseArray(ret)<br />
ret.other = other<br />
end<br />
return ret<br />
end<br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- compressSparseArray<br />
--<br />
-- This takes an array with one or more nil values, and removes the nil values<br />
-- while preserving the order, so that the array can be safely traversed with<br />
-- ipairs.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
function p.compressSparseArray(t)<br />
checkType('compressSparseArray', 1, t, 'table')<br />
local ret = {}<br />
local nums = p.numKeys(t)<br />
for _, num in ipairs(nums) do<br />
ret[#ret + 1] = t[num]<br />
end<br />
return ret<br />
end<br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- sparseIpairs<br />
--<br />
-- This is an iterator for sparse arrays. It can be used like ipairs, but can<br />
-- handle nil values.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
function p.sparseIpairs(t)<br />
checkType('sparseIpairs', 1, t, 'table')<br />
local nums = p.numKeys(t)<br />
local i = 0<br />
local lim = #nums<br />
return function ()<br />
i = i + 1<br />
if i <= lim then<br />
local key = nums[i]<br />
return key, t[key]<br />
else<br />
return nil, nil<br />
end<br />
end<br />
end<br />
<br />
--[[<br />
------------------------------------------------------------------------------------<br />
-- size<br />
--<br />
-- This returns the size of a key/value pair table. It will also work on arrays,<br />
-- but for arrays it is more efficient to use the # operator.<br />
------------------------------------------------------------------------------------<br />
--]]<br />
<br />
function p.size(t)<br />
checkType('size', 1, t, 'table')<br />
local i = 0<br />
for k in pairs(t) do<br />
i = i + 1<br />
end<br />
return i<br />
end<br />
<br />
<br />
local function defaultKeySort(item1, item2)<br />
-- "number" < "string", so numbers will be sorted before strings.<br />
local type1, type2 = type(item1), type(item2)<br />
if type1 ~= type2 then<br />
return type1 < type2<br />
else -- This will fail with table, boolean, function.<br />
return item1 < item2<br />
end<br />
end<br />
<br />
--[[<br />
Returns a list of the keys in a table, sorted using either a default<br />
comparison function or a custom keySort function.<br />
]]<br />
function p.keysToList(t, keySort, checked)<br />
if not checked then<br />
checkType('keysToList', 1, t, 'table')<br />
checkTypeMulti('keysToList', 2, keySort, { 'function', 'boolean', 'nil' })<br />
end<br />
<br />
local list = {}<br />
local index = 1<br />
for key, value in pairs(t) do<br />
list[index] = key<br />
index = index + 1<br />
end<br />
<br />
if keySort ~= false then<br />
keySort = type(keySort) == 'function' and keySort or defaultKeySort<br />
<br />
table.sort(list, keySort)<br />
end<br />
<br />
return list<br />
end<br />
<br />
--[[<br />
Iterates through a table, with the keys sorted using the keysToList function.<br />
If there are only numerical keys, sparseIpairs is probably more efficient.<br />
]]<br />
function p.sortedPairs(t, keySort)<br />
checkType('sortedPairs', 1, t, 'table')<br />
checkType('sortedPairs', 2, keySort, 'function', true)<br />
<br />
local list = p.keysToList(t, keySort, true)<br />
<br />
local i = 0<br />
return function()<br />
i = i + 1<br />
local key = list[i]<br />
if key ~= nil then<br />
return key, t[key]<br />
else<br />
return nil, nil<br />
end<br />
end<br />
end<br />
<br />
--[[<br />
Returns true if all keys in the table are consecutive integers starting at 1.<br />
--]]<br />
function p.isArray(t)<br />
checkType("isArray", 1, t, "table")<br />
<br />
local i = 0<br />
for k, v in pairs(t) do<br />
i = i + 1<br />
if t[i] == nil then<br />
return false<br />
end<br />
end<br />
return true<br />
end<br />
<br />
-- { "a", "b", "c" } -> { a = 1, b = 2, c = 3 }<br />
function p.invert(array)<br />
checkType("invert", 1, array, "table")<br />
<br />
local map = {}<br />
for i, v in ipairs(array) do<br />
map[v] = i<br />
end<br />
<br />
return map<br />
end<br />
<br />
--[[<br />
{ "a", "b", "c" } -> { ["a"] = true, ["b"] = true, ["c"] = true }<br />
--]]<br />
function p.listToSet(t)<br />
checkType("listToSet", 1, t, "table")<br />
<br />
local set = {}<br />
for _, item in ipairs(t) do<br />
set[item] = true<br />
end<br />
<br />
return set<br />
end<br />
<br />
--[[<br />
Recursive deep copy function.<br />
Preserves identities of subtables.<br />
<br />
]]<br />
local function _deepCopy(orig, includeMetatable, already_seen)<br />
-- Stores copies of tables indexed by the original table.<br />
already_seen = already_seen or {}<br />
<br />
local copy = already_seen[orig]<br />
if copy ~= nil then<br />
return copy<br />
end<br />
<br />
if type(orig) == 'table' then<br />
copy = {}<br />
for orig_key, orig_value in pairs(orig) do<br />
copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen)<br />
end<br />
already_seen[orig] = copy<br />
<br />
if includeMetatable then<br />
local mt = getmetatable(orig)<br />
if mt ~= nil then<br />
local mt_copy = deepcopy(mt, includeMetatable, already_seen)<br />
setmetatable(copy, mt_copy)<br />
already_seen[mt] = mt_copy<br />
end<br />
end<br />
else -- number, string, boolean, etc<br />
copy = orig<br />
end<br />
return copy<br />
end<br />
<br />
function p.deepCopy(orig, noMetatable, already_seen)<br />
checkType("deepCopy", 3, already_seen, "table", true)<br />
<br />
return _deepCopy(orig, not noMetatable, already_seen)<br />
end<br />
<br />
--[[<br />
Concatenates all values in the table that are indexed by a number, in order.<br />
sparseConcat{ a, nil, c, d } => "acd"<br />
sparseConcat{ nil, b, c, d } => "bcd"<br />
]]<br />
function p.sparseConcat(t, sep, i, j)<br />
local list = {}<br />
<br />
local list_i = 0<br />
for _, v in p.sparseIpairs(t) do<br />
list_i = list_i + 1<br />
list[list_i] = v<br />
end<br />
<br />
return table.concat(list, sep, i, j)<br />
end<br />
<br />
--[[<br />
-- Finds the length of an array, or of a quasi-array with keys such<br />
-- as "data1", "data2", etc., using an exponental search algorithm. <br />
-- It is similar to the operator #, but may return<br />
-- a different value when there are gaps in the array portion of the table.<br />
-- Intended to be used on data loaded with mw.loadData. For other tables, use #.<br />
-- Note: #frame.args in frame object always be set to 0, regardless of <br />
-- the number of unnamed template parameters, so use this function for<br />
-- frame.args.<br />
--]]<br />
<br />
function p.length(t, prefix)<br />
-- requiring module inline so that [[Module:Exponental search]]<br />
-- which is only needed by this one function<br />
-- doesn't get millions of transclusions<br />
local expSearch = require("Module:Exponential search")<br />
checkType('length', 1, t, 'table')<br />
checkType('length', 2, prefix, 'string', true)<br />
return expSearch(function(i)<br />
local key<br />
if prefix then<br />
key = prefix .. tostring(i)<br />
else<br />
key = i<br />
end<br />
return t[key] ~= nil<br />
end) or 0<br />
end<br />
function p.inArray(arr, valueToFind)<br />
checkType("inArray", 1, arr, "table")<br />
<br />
-- if valueToFind is nil, error?<br />
<br />
for _, v in ipairs(arr) do<br />
if v == valueToFind then<br />
return true<br />
end<br />
end<br />
<br />
return false<br />
end<br />
<br />
return p</div>Webadminhttps://www.nmnwiki.com/index.php?title=Module:Tlg&diff=146Module:Tlg2020-05-14T19:16:37Z<p>Webadmin: 1 revision imported</p>
<hr />
<div>-- This implements Template:Tlg<br />
local getArgs = require('Module:Arguments').getArgs<br />
local p = {}<br />
<br />
-- Is a string non-empty?<br />
local function _ne(s) <br />
return s ~= nil and s ~= ""<br />
end<br />
<br />
local nw = mw.text.nowiki<br />
<br />
local function addTemplate(s)<br />
local i, _ = s:find(':', 1, true)<br />
if i == nil then<br />
return 'Template:' .. s<br />
end<br />
local ns = s:sub(1, i - 1)<br />
if ns == '' or mw.site.namespaces[ns] then<br />
return s<br />
else<br />
return 'Template:' .. s<br />
end<br />
end<br />
<br />
local function trimTemplate(s)<br />
local needle = 'template:'<br />
if s:sub(1, needle:len()):lower() == needle then<br />
return s:sub(needle:len() + 1) <br />
else<br />
return s<br />
end<br />
end<br />
<br />
local function linkTitle(args)<br />
if _ne(args.nolink) then<br />
return args['1']<br />
end<br />
<br />
local titleObj<br />
local titlePart = '[['<br />
if args['1'] then<br />
-- This handles :Page and other NS<br />
titleObj = mw.title.new(args['1'], 'Template')<br />
else<br />
titleObj = mw.title.getCurrentTitle()<br />
end<br />
<br />
titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or<br />
addTemplate(args['1']))<br />
<br />
local textPart = args.alttext<br />
if not _ne(textPart) then<br />
if titleObj ~= nil then<br />
textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText<br />
else<br />
-- redlink<br />
textPart = args['1']<br />
end<br />
end<br />
<br />
if _ne(args.subst) then<br />
-- HACK: the ns thing above is probably broken<br />
textPart = 'subst:' .. textPart<br />
end<br />
<br />
if _ne(args.brace) then<br />
textPart = nw('{{') .. textPart .. nw('}}')<br />
elseif _ne(args.braceinside) then<br />
textPart = nw('{') .. textPart .. nw('}')<br />
end<br />
<br />
titlePart = titlePart .. '|' .. textPart .. ']]'<br />
if _ne(args.braceinside) then<br />
titlePart = nw('{') .. titlePart .. nw('}')<br />
end<br />
return titlePart<br />
end<br />
<br />
function p.main(frame)<br />
local args = getArgs(frame, {<br />
trim = true,<br />
removeBlanks = false<br />
})<br />
return p._main(args)<br />
end<br />
<br />
function p._main(args)<br />
local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname)<br />
local italic = _ne(args.italic) or _ne(args.italics)<br />
local dontBrace = _ne(args.brace) or _ne(args.braceinside)<br />
local code = _ne(args.code) or _ne(args.tt)<br />
<br />
-- Build the link part<br />
local titlePart = linkTitle(args)<br />
if bold then titlePart = "'''" .. titlePart .. "'''" end<br />
if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end<br />
<br />
-- Build the arguments<br />
local textPart = ""<br />
for i = 2, 11 do<br />
local ii = tostring(i)<br />
local val = args[ii]<br />
if val ~= nil then val = mw.text.unstripNoWiki(val) else break end<br />
if _ne(args.nowiki) then val = nw(val) end<br />
if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end<br />
textPart = textPart .. '&#124;' .. val<br />
end<br />
if _ne(args['12']) then textPart = textPart .. '&#124;…' end<br />
<br />
-- final wrap<br />
local ret = titlePart .. textPart<br />
if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end<br />
if _ne(args.a) then ret = nw('*') .. '&nbsp;' .. ret end<br />
if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end<br />
if code then<br />
ret = '<code>' .. ret .. '</code>'<br />
elseif _ne(args.plaincode) then<br />
ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>'<br />
end<br />
if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end<br />
<br />
--[[ Wrap as html?? <br />
local span = mw.html.create('span')<br />
span:wikitext(ret)<br />
--]]<br />
if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end<br />
return ret<br />
end<br />
<br />
return p</div>Webadminhttps://www.nmnwiki.com/index.php?title=Module:Protection_banner/config&diff=138Module:Protection banner/config2020-05-14T19:16:36Z<p>Webadmin: 1 revision imported</p>
<hr />
<div>-- This module provides configuration data for [[Module:Protection banner]].<br />
<br />
return {<br />
<br />
--------------------------------------------------------------------------------<br />
--<br />
-- BANNER DATA<br />
--<br />
--------------------------------------------------------------------------------<br />
<br />
--[[<br />
-- Banner data consists of six fields:<br />
-- * text - the main protection text that appears at the top of protection<br />
-- banners.<br />
-- * explanation - the text that appears below the main protection text, used<br />
-- to explain the details of the protection.<br />
-- * tooltip - the tooltip text you see when you move the mouse over a small<br />
-- padlock icon.<br />
-- * link - the page that the small padlock icon links to.<br />
-- * alt - the alt text for the small padlock icon. This is also used as tooltip<br />
-- text for the large protection banners.<br />
-- * image - the padlock image used in both protection banners and small padlock<br />
-- icons.<br />
--<br />
-- The module checks in three separate tables to find a value for each field.<br />
-- First it checks the banners table, which has values specific to the reason<br />
-- for the page being protected. Then the module checks the defaultBanners<br />
-- table, which has values specific to each protection level. Finally, the<br />
-- module checks the masterBanner table, which holds data for protection<br />
-- templates to use if no data has been found in the previous two tables.<br />
--<br />
-- The values in the banner data can take parameters. These are specified<br />
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name<br />
-- enclosed in curly braces).<br />
--<br />
-- Available parameters:<br />
--<br />
-- ${CURRENTVERSION} - a link to the page history or the move log, with the<br />
-- display message "current-version-edit-display" or<br />
-- "current-version-move-display".<br />
--<br />
-- ${EDITREQUEST} - a link to create an edit request for the current page.<br />
--<br />
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes<br />
-- on the talk page; you may submit a request to ask an administrator to make<br />
-- an edit if it is minor or supported by consensus."<br />
--<br />
-- ${IMAGELINK} - a link to set the image to, depending on the protection<br />
-- action and protection level.<br />
--<br />
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry<br />
-- is set. E.g. "Editing of this page by new or unregistered users is currently <br />
-- disabled until dd Month YYYY."<br />
--<br />
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation<br />
-- so that it can be used in run-on sentences.<br />
--<br />
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".<br />
-- Defined in the cfg.pagetypes table.<br />
--<br />
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.<br />
-- "Editing of this page by new or unregistered users is currently disabled"<br />
--<br />
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the<br />
-- template.<br />
--<br />
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or<br />
-- "semi-protected".<br />
--<br />
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,<br />
-- depending on the protection action.<br />
--<br />
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links<br />
-- straight to that talk page section.<br />
--<br />
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to<br />
-- create a blurb like "This template is semi-protected", or "This article is<br />
-- move-protected until DD Month YYYY".<br />
--<br />
-- ${VANDAL} - links for the specified username (or the root page name)<br />
-- using Module:Vandal-m.<br />
--<br />
-- Functions<br />
--<br />
-- For advanced users, it is possible to use Lua functions instead of strings<br />
-- in the banner config tables. Using functions gives flexibility that is not<br />
-- possible just by using parameters. Functions take two arguments, the<br />
-- protection object and the template arguments, and they must output a string.<br />
--<br />
-- For example:<br />
--<br />
-- text = function (protectionObj, args)<br />
-- if protectionObj.level == 'autoconfirmed' then<br />
-- return 'foo'<br />
-- else<br />
-- return 'bar'<br />
-- end<br />
-- end<br />
--<br />
-- Some protection object properties and methods that may be useful:<br />
-- protectionObj.action - the protection action<br />
-- protectionObj.level - the protection level<br />
-- protectionObj.reason - the protection reason<br />
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set<br />
-- to indefinite, and the protection time in unix time if temporary.<br />
-- protectionObj.protectionDate - the protection date in unix time, or nil if<br />
-- unspecified.<br />
-- protectionObj.bannerConfig - the banner config found by the module. Beware<br />
-- of editing the config field used by the function, as it could create an<br />
-- infinite loop.<br />
-- protectionObj:isProtected - returns a boolean showing whether the page is<br />
-- protected.<br />
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is<br />
-- temporary.<br />
-- protectionObj:isIncorrect - returns a boolean showing whether the protection<br />
-- template is incorrect.<br />
--]]<br />
<br />
-- The master banner data, used if no values have been found in banners or<br />
-- defaultBanners.<br />
masterBanner = {<br />
text = '${INTROBLURB}',<br />
explanation = '${EXPLANATIONBLURB}',<br />
tooltip = '${TOOLTIPBLURB}',<br />
link = '${IMAGELINK}',<br />
alt = 'Page ${PROTECTIONLEVEL}'<br />
},<br />
<br />
-- The default banner data. This holds banner data for different protection<br />
-- levels.<br />
-- *required* - this table needs edit, move, autoreview and upload subtables.<br />
defaultBanners = {<br />
edit = {},<br />
move = {},<br />
autoreview = {<br />
default = {<br />
alt = 'Page protected with pending changes',<br />
tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',<br />
image = 'Pending-protection-shackle.svg'<br />
}<br />
},<br />
upload = {}<br />
},<br />
<br />
-- The banner data. This holds banner data for different protection reasons.<br />
-- In fact, the reasons specified in this table control which reasons are<br />
-- valid inputs to the first positional parameter.<br />
--<br />
-- There is also a non-standard "description" field that can be used for items<br />
-- in this table. This is a description of the protection reason for use in the<br />
-- module documentation.<br />
--<br />
-- *required* - this table needs edit, move, autoreview and upload subtables.<br />
banners = {<br />
edit = {<br />
blp = {<br />
description = 'For pages protected to promote compliance with the'<br />
.. ' [[Wikipedia:Biographies of living persons'<br />
.. '|biographies of living persons]] policy',<br />
text = '${INTROFRAGMENT} to promote compliance with'<br />
.. ' [[Wikipedia:Biographies of living persons'<br />
.. "|Wikipedia's&nbsp;policy on&nbsp;the&nbsp;biographies"<br />
.. ' of&nbsp;living&nbsp;people]].',<br />
tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on'<br />
.. ' biographies of living persons',<br />
},<br />
dmca = {<br />
description = 'For pages protected by the Wikimedia Foundation'<br />
.. ' due to [[Digital Millennium Copyright Act]] takedown requests',<br />
explanation = function (protectionObj, args)<br />
local ret = 'Pursuant to a rights owner notice under the Digital'<br />
.. ' Millennium Copyright Act (DMCA) regarding some content'<br />
.. ' in this article, the Wikimedia Foundation acted under'<br />
.. ' applicable law and took down and restricted the content'<br />
.. ' in question.'<br />
if args.notice then<br />
ret = ret .. ' A copy of the received notice can be found here: '<br />
.. args.notice .. '.'<br />
end<br />
ret = ret .. ' For more information, including websites discussing'<br />
.. ' how to file a counter-notice, please see'<br />
.. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}."<br />
.. "'''Do not remove this template from the article until the"<br />
.. " restrictions are withdrawn'''."<br />
return ret<br />
end,<br />
image = 'Office-protection-shackle.svg',<br />
},<br />
dispute = {<br />
description = 'For pages protected due to editing disputes',<br />
text = function (protectionObj, args)<br />
-- Find the value of "disputes".<br />
local display = 'disputes'<br />
local disputes<br />
if args.section then<br />
disputes = string.format(<br />
'[[%s:%s#%s|%s]]',<br />
mw.site.namespaces[protectionObj.title.namespace].talk.name,<br />
protectionObj.title.text,<br />
args.section,<br />
display<br />
)<br />
else<br />
disputes = display<br />
end<br />
<br />
-- Make the blurb, depending on the expiry.<br />
local msg<br />
if type(protectionObj.expiry) == 'number' then<br />
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'<br />
else<br />
msg = '${INTROFRAGMENT} until editing %s have been resolved.'<br />
end<br />
return string.format(msg, disputes)<br />
end,<br />
explanation = "This protection is '''not''' an endorsement of the"<br />
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',<br />
tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',<br />
},<br />
ecp = {<br />
description = 'For articles in topic areas authorized by'<br />
.. ' [[Wikipedia:Arbitration Committee|ArbCom]] or'<br />
.. ' meets the criteria for community use',<br />
tooltip = 'This ${PAGETYPE} is extended-confirmed protected',<br />
alt = 'Extended-protected ${PAGETYPE}',<br />
},<br />
mainpage = {<br />
description = 'For pages protected for being displayed on the [[Main Page]]',<br />
text = 'This file is currently'<br />
.. ' [[Wikipedia:This page is protected|protected]] from'<br />
.. ' editing because it is currently or will soon be displayed'<br />
.. ' on the [[Main Page]].',<br />
explanation = 'Images on the Main Page are protected due to their high'<br />
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'<br />
.. '<br /><span style="font-size:90%;">'<br />
.. "'''Administrators:''' Once this image is definitely off the Main Page,"<br />
.. ' please unprotect this file, or reduce to semi-protection,'<br />
.. ' as appropriate.</span>',<br />
},<br />
office = {<br />
description = 'For pages protected by the Wikimedia Foundation',<br />
text = function (protectionObj, args)<br />
local ret = 'This ${PAGETYPE} is currently under the'<br />
.. ' scrutiny of the'<br />
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'<br />
.. ' and is protected.'<br />
if protectionObj.protectionDate then<br />
ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'<br />
end<br />
return ret<br />
end,<br />
explanation = "If you can edit this page, please discuss all changes and"<br />
.. " additions on the ${TALKPAGE} first. '''Do not remove protection from this"<br />
.. " page unless you are authorized by the Wikimedia Foundation to do"<br />
.. " so.'''",<br />
image = 'Office-protection-shackle.svg',<br />
},<br />
reset = {<br />
description = 'For pages protected by the Wikimedia Foundation and'<br />
.. ' "reset" to a bare-bones version',<br />
text = 'This ${PAGETYPE} is currently under the'<br />
.. ' scrutiny of the'<br />
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'<br />
.. ' and is protected.',<br />
explanation = function (protectionObj, args)<br />
local ret = ''<br />
if protectionObj.protectionDate then<br />
ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'<br />
else<br />
ret = ret .. 'This ${PAGETYPE} has been'<br />
end<br />
ret = ret .. ' reduced to a'<br />
.. ' simplified, "bare bones" version so that it may be completely'<br />
.. ' rewritten to ensure it meets the policies of'<br />
.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'<br />
.. ' Standard Wikipedia policies will apply to its rewriting—which'<br />
.. ' will eventually be open to all editors—and will be strictly'<br />
.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'<br />
.. ' it is being rebuilt.\n\n'<br />
.. 'Any insertion of material directly from'<br />
.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'<br />
.. ' will any material added to the ${PAGETYPE} that is not properly'<br />
.. ' sourced. The associated talk page(s) were also cleared on the'<br />
.. " same date.\n\n"<br />
.. "If you can edit this page, please discuss all changes and"<br />
.. " additions on the ${TALKPAGE} first. '''Do not override"<br />
.. " this action, and do not remove protection from this page,"<br />
.. " unless you are authorized by the Wikimedia Foundation"<br />
.. " to do so. No editor may remove this notice.'''"<br />
<br />
return ret<br />
end,<br />
image = 'Office-protection-shackle.svg',<br />
},<br />
sock = {<br />
description = 'For pages protected due to'<br />
.. ' [[Wikipedia:Sock puppetry|sock puppetry]]',<br />
text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'<br />
.. ' [[Wikipedia:Blocking policy|blocked]] or'<br />
.. ' [[Wikipedia:Banning policy|banned users]]'<br />
.. ' from editing it.',<br />
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'<br />
.. ' editing it',<br />
},<br />
template = {<br />
description = 'For [[Wikipedia:High-risk templates|high-risk]]'<br />
.. ' templates and Lua modules',<br />
text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},'<br />
.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',<br />
explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'<br />
.. ' ${EDITREQUEST} to ask an'<br />
.. ' [[Wikipedia:Administrators|administrator]] or'<br />
.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'<br />
.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'<br />
.. '|uncontroversial]] or supported by'<br />
.. ' [[Wikipedia:Consensus|consensus]]. You can also'<br />
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'<br />
.. ' unprotected.',<br />
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'<br />
.. ' to prevent vandalism',<br />
alt = 'Permanently protected ${PAGETYPE}',<br />
},<br />
usertalk = {<br />
description = 'For pages protected against disruptive edits by a'<br />
.. ' particular user',<br />
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'<br />
.. ' such as abusing the'<br />
.. ' &#123;&#123;[[Template:unblock|unblock]]&#125;&#125; template.',<br />
explanation = 'If you cannot edit this user talk page and you need to'<br />
.. ' make a change or leave a message, you can'<br />
.. ' [[Wikipedia:Requests for page protection'<br />
.. '#Current requests for edits to a protected page'<br />
.. '|request an edit]],'<br />
.. ' [[Wikipedia:Requests for page protection'<br />
.. '#Current requests for reduction in protection level'<br />
.. '|request unprotection]],'<br />
.. ' [[Special:Userlogin|log in]],'<br />
.. ' or [[Special:UserLogin/signup|create an account]].',<br />
},<br />
vandalism = {<br />
description = 'For pages protected against'<br />
.. ' [[Wikipedia:Vandalism|vandalism]]',<br />
text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',<br />
explanation = function (protectionObj, args)<br />
local ret = ''<br />
if protectionObj.level == 'sysop' then<br />
ret = ret .. "This protection is '''not''' an endorsement of the"<br />
.. ' ${CURRENTVERSION}. '<br />
end<br />
return ret .. '${EXPLANATIONBLURB}'<br />
end,<br />
tooltip = '${TOOLTIPFRAGMENT} due to vandalism',<br />
}<br />
},<br />
move = {<br />
dispute = {<br />
description = 'For pages protected against page moves due to'<br />
.. ' disputes over the page title',<br />
explanation = "This protection is '''not''' an endorsement of the"<br />
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',<br />
image = 'Move-protection-shackle.svg'<br />
},<br />
vandalism = {<br />
description = 'For pages protected against'<br />
.. ' [[Wikipedia:Vandalism#Page-move vandalism'<br />
.. ' |page-move vandalism]]'<br />
}<br />
},<br />
autoreview = {},<br />
upload = {}<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
--<br />
-- GENERAL DATA TABLES<br />
--<br />
--------------------------------------------------------------------------------<br />
<br />
--------------------------------------------------------------------------------<br />
-- Protection blurbs<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table produces the protection blurbs available with the<br />
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and<br />
-- protection level, and is checked by the module in the following order:<br />
-- 1. page's protection action, page's protection level<br />
-- 2. page's protection action, default protection level<br />
-- 3. "edit" protection action, default protection level<br />
--<br />
-- It is possible to use banner parameters inside this table.<br />
-- *required* - this table needs edit, move, autoreview and upload subtables.<br />
protectionBlurbs = {<br />
edit = {<br />
default = 'This ${PAGETYPE} is currently [[Help:Protection|'<br />
.. 'protected]] from editing',<br />
autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'<br />
.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'<br />
.. ' users|unregistered]] users is currently [[Help:Protection|disabled]]',<br />
extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection',<br />
},<br />
move = {<br />
default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'<br />
.. ' from [[Help:Moving a page|page moves]]'<br />
},<br />
autoreview = {<br />
default = 'All edits made to this ${PAGETYPE} by'<br />
.. ' [[Wikipedia:User access levels#New users|new]] or'<br />
.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'<br />
.. ' users are currently'<br />
.. ' [[Wikipedia:Pending changes|subject to review]]'<br />
},<br />
upload = {<br />
default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'<br />
}<br />
},<br />
<br />
<br />
--------------------------------------------------------------------------------<br />
-- Explanation blurbs<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table produces the explanation blurbs available with the<br />
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,<br />
-- protection level, and whether the page is a talk page or not. If the page is<br />
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk<br />
-- key of "subject". The table is checked in the following order:<br />
-- 1. page's protection action, page's protection level, page's talk key<br />
-- 2. page's protection action, page's protection level, default talk key<br />
-- 3. page's protection action, default protection level, page's talk key<br />
-- 4. page's protection action, default protection level, default talk key<br />
--<br />
-- It is possible to use banner parameters inside this table.<br />
-- *required* - this table needs edit, move, autoreview and upload subtables.<br />
explanationBlurbs = {<br />
edit = {<br />
autoconfirmed = {<br />
subject = 'See the [[Wikipedia:Protection policy|'<br />
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'<br />
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'<br />
.. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},'<br />
.. ' [[Wikipedia:Requests for page protection'<br />
.. '#Current requests for reduction in protection level'<br />
.. '|request unprotection]], [[Special:Userlogin|log in]], or'<br />
.. ' [[Special:UserLogin/signup|create an account]].',<br />
default = 'See the [[Wikipedia:Protection policy|'<br />
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'<br />
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'<br />
.. ' [[Wikipedia:Requests for page protection'<br />
.. '#Current requests for reduction in protection level'<br />
.. '|request unprotection]], [[Special:Userlogin|log in]], or'<br />
.. ' [[Special:UserLogin/signup|create an account]].',<br />
},<br />
extendedconfirmed = {<br />
default = 'Extended confirmed protection prevents edits from all unregistered editors'<br />
.. ' and registered users with fewer than 30 days tenure and 500 edits.'<br />
.. ' The [[Wikipedia:Protection policy#extended|policy on community use]]'<br />
.. ' specifies that extended confirmed protection can be applied to combat'<br />
.. ' disruption, if semi-protection has proven to be ineffective.'<br />
.. ' Extended confirmed protection may also be applied to enforce'<br />
.. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].'<br />
.. ' Please discuss any changes on the ${TALKPAGE}; you may'<br />
.. ' ${EDITREQUEST} to ask for uncontroversial changes supported by'<br />
.. ' [[Wikipedia:Consensus|consensus]].'<br />
},<br />
default = {<br />
subject = 'See the [[Wikipedia:Protection policy|'<br />
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'<br />
.. ' Please discuss any changes on the ${TALKPAGE}; you'<br />
.. ' may ${EDITREQUEST} to ask an'<br />
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'<br />
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'<br />
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'<br />
.. '|consensus]]. You may also [[Wikipedia:Requests for'<br />
.. ' page protection#Current requests for reduction in protection level'<br />
.. '|request]] that this page be unprotected.',<br />
default = 'See the [[Wikipedia:Protection policy|'<br />
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'<br />
.. ' You may [[Wikipedia:Requests for page'<br />
.. ' protection#Current requests for edits to a protected page|request an'<br />
.. ' edit]] to this page, or [[Wikipedia:Requests for'<br />
.. ' page protection#Current requests for reduction in protection level'<br />
.. '|ask]] for it to be unprotected.'<br />
}<br />
},<br />
move = {<br />
default = {<br />
subject = 'See the [[Wikipedia:Protection policy|'<br />
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'<br />
.. ' The page may still be edited but cannot be moved'<br />
.. ' until unprotected. Please discuss any suggested moves on the'<br />
.. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also'<br />
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'<br />
.. ' unprotected.',<br />
default = 'See the [[Wikipedia:Protection policy|'<br />
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'<br />
.. ' The page may still be edited but cannot be moved'<br />
.. ' until unprotected. Please discuss any suggested moves at'<br />
.. ' [[Wikipedia:Requested moves]]. You can also'<br />
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'<br />
.. ' unprotected.'<br />
}<br />
},<br />
autoreview = {<br />
default = {<br />
default = 'See the [[Wikipedia:Protection policy|'<br />
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'<br />
.. ' Edits to this ${PAGETYPE} by new and unregistered users'<br />
.. ' will not be visible to readers until they are accepted by'<br />
.. ' a reviewer. To avoid the need for your edits to be'<br />
.. ' reviewed, you may'<br />
.. ' [[Wikipedia:Requests for page protection'<br />
.. '#Current requests for reduction in protection level'<br />
.. '|request unprotection]], [[Special:Userlogin|log in]], or'<br />
.. ' [[Special:UserLogin/signup|create an account]].'<br />
},<br />
},<br />
upload = {<br />
default = {<br />
default = 'See the [[Wikipedia:Protection policy|'<br />
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'<br />
.. ' The page may still be edited but new versions of the file'<br />
.. ' cannot be uploaded until it is unprotected. You can'<br />
.. ' request that a new version be uploaded by using a'<br />
.. ' [[Wikipedia:Edit requests|protected edit request]], or you'<br />
.. ' can [[Wikipedia:Requests for page protection|request]]'<br />
.. ' that the file be unprotected.'<br />
}<br />
}<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Protection levels<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which<br />
-- produces a short label for different protection levels. It is sorted by<br />
-- protection action and protection level, and is checked in the following<br />
-- order:<br />
-- 1. page's protection action, page's protection level<br />
-- 2. page's protection action, default protection level<br />
-- 3. "edit" protection action, default protection level<br />
--<br />
-- It is possible to use banner parameters inside this table.<br />
-- *required* - this table needs edit, move, autoreview and upload subtables.<br />
protectionLevels = {<br />
edit = {<br />
default = 'protected',<br />
templateeditor = 'template-protected',<br />
extendedconfirmed = 'extended-protected',<br />
autoconfirmed = 'semi-protected',<br />
},<br />
move = {<br />
default = 'move-protected'<br />
},<br />
autoreview = {<br />
},<br />
upload = {<br />
default = 'upload-protected'<br />
}<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Images<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table lists different padlock images for each protection action and<br />
-- protection level. It is used if an image is not specified in any of the<br />
-- banner data tables, and if the page does not satisfy the conditions for using<br />
-- the ['image-filename-indef'] image. It is checked in the following order:<br />
-- 1. page's protection action, page's protection level<br />
-- 2. page's protection action, default protection level<br />
images = {<br />
edit = {<br />
default = 'Full-protection-shackle.svg',<br />
templateeditor = 'Template-protection-shackle.svg',<br />
extendedconfirmed = 'Extended-protection-shackle.svg',<br />
autoconfirmed = 'Semi-protection-shackle.svg'<br />
},<br />
move = {<br />
default = 'Move-protection-shackle.svg',<br />
},<br />
autoreview = {<br />
default = 'Pending-protection-shackle.svg'<br />
},<br />
upload = {<br />
default = 'Upload-protection-shackle.svg'<br />
}<br />
},<br />
<br />
-- Pages with a reason specified in this table will show the special "indef"<br />
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.<br />
indefImageReasons = {<br />
template = true<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Image links<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table provides the data for the ${IMAGELINK} parameter, which gets<br />
-- the image link for small padlock icons based on the page's protection action<br />
-- and protection level. It is checked in the following order:<br />
-- 1. page's protection action, page's protection level<br />
-- 2. page's protection action, default protection level<br />
-- 3. "edit" protection action, default protection level<br />
--<br />
-- It is possible to use banner parameters inside this table.<br />
-- *required* - this table needs edit, move, autoreview and upload subtables.<br />
imageLinks = {<br />
edit = {<br />
default = 'Wikipedia:Protection policy#full',<br />
templateeditor = 'Wikipedia:Protection policy#template',<br />
extendedconfirmed = 'Wikipedia:Protection policy#extended',<br />
autoconfirmed = 'Wikipedia:Protection policy#semi'<br />
},<br />
move = {<br />
default = 'Wikipedia:Protection policy#move'<br />
},<br />
autoreview = {<br />
default = 'Wikipedia:Protection policy#pending'<br />
},<br />
upload = {<br />
default = 'Wikipedia:Protection policy#upload'<br />
}<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Padlock indicator names<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table provides the "name" attribute for the <indicator> extension tag<br />
-- with which small padlock icons are generated. All indicator tags on a page<br />
-- are displayed in alphabetical order based on this attribute, and with<br />
-- indicator tags with duplicate names, the last tag on the page wins.<br />
-- The attribute is chosen based on the protection action; table keys must be a<br />
-- protection action name or the string "default".<br />
padlockIndicatorNames = {<br />
autoreview = 'pp-autoreview',<br />
default = 'pp-default'<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Protection categories<br />
--------------------------------------------------------------------------------<br />
<br />
--[[<br />
-- The protection categories are stored in the protectionCategories table.<br />
-- Keys to this table are made up of the following strings:<br />
--<br />
-- 1. the expiry date<br />
-- 2. the namespace<br />
-- 3. the protection reason (e.g. "dispute" or "vandalism")<br />
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")<br />
-- 5. the action (e.g. "edit" or "move")<br />
-- <br />
-- When the module looks up a category in the table, first it will will check to<br />
-- see a key exists that corresponds to all five parameters. For example, a<br />
-- user page semi-protected from vandalism for two weeks would have the key<br />
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module<br />
-- changes the first part of the key to "all" and checks the table again. It<br />
-- keeps checking increasingly generic key combinations until it finds the<br />
-- field, or until it reaches the key "all-all-all-all-all".<br />
--<br />
-- The module uses a binary matrix to determine the order in which to search.<br />
-- This is best demonstrated by a table. In this table, the "0" values<br />
-- represent "all", and the "1" values represent the original data (e.g.<br />
-- "indef" or "file" or "vandalism").<br />
--<br />
-- expiry namespace reason level action<br />
-- order<br />
-- 1 1 1 1 1 1<br />
-- 2 0 1 1 1 1<br />
-- 3 1 0 1 1 1<br />
-- 4 0 0 1 1 1<br />
-- 5 1 1 0 1 1<br />
-- 6 0 1 0 1 1<br />
-- 7 1 0 0 1 1<br />
-- 8 0 0 0 1 1<br />
-- 9 1 1 1 0 1<br />
-- 10 0 1 1 0 1<br />
-- 11 1 0 1 0 1<br />
-- 12 0 0 1 0 1<br />
-- 13 1 1 0 0 1<br />
-- 14 0 1 0 0 1<br />
-- 15 1 0 0 0 1<br />
-- 16 0 0 0 0 1<br />
-- 17 1 1 1 1 0<br />
-- 18 0 1 1 1 0<br />
-- 19 1 0 1 1 0<br />
-- 20 0 0 1 1 0<br />
-- 21 1 1 0 1 0<br />
-- 22 0 1 0 1 0<br />
-- 23 1 0 0 1 0<br />
-- 24 0 0 0 1 0<br />
-- 25 1 1 1 0 0<br />
-- 26 0 1 1 0 0<br />
-- 27 1 0 1 0 0<br />
-- 28 0 0 1 0 0<br />
-- 29 1 1 0 0 0<br />
-- 30 0 1 0 0 0<br />
-- 31 1 0 0 0 0<br />
-- 32 0 0 0 0 0<br />
--<br />
-- In this scheme the action has the highest priority, as it is the last<br />
-- to change, and the expiry has the least priority, as it changes the most.<br />
-- The priorities of the expiry, the protection level and the action are<br />
-- fixed, but the priorities of the reason and the namespace can be swapped<br />
-- through the use of the cfg.bannerDataNamespaceHasPriority table.<br />
--]]<br />
<br />
-- If the reason specified to the template is listed in this table,<br />
-- namespace data will take priority over reason data in the protectionCategories<br />
-- table.<br />
reasonsWithNamespacePriority = {<br />
vandalism = true,<br />
},<br />
<br />
-- The string to use as a namespace key for the protectionCategories table for each<br />
-- namespace number.<br />
categoryNamespaceKeys = {<br />
[ 2] = 'user',<br />
[ 3] = 'user',<br />
[ 4] = 'project',<br />
[ 6] = 'file',<br />
[ 8] = 'mediawiki',<br />
[ 10] = 'template',<br />
[ 12] = 'project',<br />
[ 14] = 'category',<br />
[100] = 'portal',<br />
[828] = 'module',<br />
},<br />
<br />
protectionCategories = {<br />
['all|all|all|all|all'] = 'Wikipedia fully protected pages',<br />
['all|all|office|all|all'] = 'Wikipedia Office-protected pages',<br />
['all|all|reset|all|all'] = 'Wikipedia Office-protected pages',<br />
['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages',<br />
['all|all|mainpage|all|all'] = 'Wikipedia fully-protected main page files',<br />
['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',<br />
['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',<br />
['all|template|all|all|edit'] = 'Wikipedia fully protected templates',<br />
['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages',<br />
['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages',<br />
['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people',<br />
['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people',<br />
['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute',<br />
['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users',<br />
['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',<br />
['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories',<br />
['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files',<br />
['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals',<br />
['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages',<br />
['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages',<br />
['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates',<br />
['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages',<br />
['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates',<br />
['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people',<br />
['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people',<br />
['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute',<br />
['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users',<br />
['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism',<br />
['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories',<br />
['all|file|all|sysop|edit'] = 'Wikipedia fully-protected files',<br />
['all|project|all|sysop|edit'] = 'Wikipedia fully-protected project pages',<br />
['all|talk|all|sysop|edit'] = 'Wikipedia fully-protected talk pages',<br />
['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates',<br />
['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages',<br />
['all|module|all|all|edit'] = 'Wikipedia fully-protected modules',<br />
['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules',<br />
['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules',<br />
['all|all|all|sysop|move'] = 'Wikipedia move-protected pages',<br />
['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages',<br />
['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute',<br />
['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism',<br />
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',<br />
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',<br />
['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages',<br />
['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages',<br />
['all|template|all|sysop|move'] = 'Wikipedia move-protected templates',<br />
['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages',<br />
['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages',<br />
['all|file|all|all|upload'] = 'Wikipedia upload-protected files',<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Expiry category config<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table configures the expiry category behaviour for each protection<br />
-- action.<br />
-- * If set to true, setting that action will always categorise the page if<br />
-- an expiry parameter is not set.<br />
-- * If set to false, setting that action will never categorise the page.<br />
-- * If set to nil, the module will categorise the page if:<br />
-- 1) an expiry parameter is not set, and<br />
-- 2) a reason is provided, and<br />
-- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck<br />
-- table.<br />
<br />
expiryCheckActions = {<br />
edit = nil,<br />
move = false,<br />
autoreview = true,<br />
upload = false<br />
},<br />
<br />
reasonsWithoutExpiryCheck = {<br />
blp = true,<br />
template = true,<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Pagetypes<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table produces the page types available with the ${PAGETYPE} parameter.<br />
-- Keys are namespace numbers, or the string "default" for the default value.<br />
pagetypes = {<br />
[0] = 'article',<br />
[6] = 'file',<br />
[10] = 'template',<br />
[14] = 'category',<br />
[828] = 'module',<br />
default = 'page'<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Strings marking indefinite protection<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table contains values passed to the expiry parameter that mean the page<br />
-- is protected indefinitely.<br />
indefStrings = {<br />
['indef'] = true,<br />
['indefinite'] = true,<br />
['indefinitely'] = true,<br />
['infinite'] = true,<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Group hierarchy<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table maps each group to all groups that have a superset of the original<br />
-- group's page editing permissions.<br />
hierarchy = {<br />
sysop = {},<br />
reviewer = {'sysop'},<br />
filemover = {'sysop'},<br />
templateeditor = {'sysop'},<br />
extendedconfirmed = {'sysop'},<br />
autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},<br />
user = {'autoconfirmed'},<br />
['*'] = {'user'}<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- Wrapper templates and their default arguments<br />
--------------------------------------------------------------------------------<br />
<br />
-- This table contains wrapper templates used with the module, and their<br />
-- default arguments. Templates specified in this table should contain the<br />
-- following invocation, and no other template content:<br />
--<br />
-- {{#invoke:Protection banner|main}}<br />
--<br />
-- If other content is desired, it can be added between<br />
-- <noinclude>...</noinclude> tags.<br />
--<br />
-- When a user calls one of these wrapper templates, they will use the<br />
-- default arguments automatically. However, users can override any of the<br />
-- arguments.<br />
wrappers = {<br />
['Template:Pp'] = {},<br />
['Template:Pp-extended'] = {'ecp'},<br />
['Template:Pp-blp'] = {'blp'},<br />
-- we don't need Template:Pp-create<br />
['Template:Pp-dispute'] = {'dispute'},<br />
['Template:Pp-main-page'] = {'mainpage'},<br />
['Template:Pp-move'] = {action = 'move'},<br />
['Template:Pp-move-dispute'] = {'dispute', action = 'move'},<br />
-- we don't need Template:Pp-move-indef<br />
['Template:Pp-move-vandalism'] = {'vandalism', action = 'move'},<br />
['Template:Pp-office'] = {'office'},<br />
['Template:Pp-office-dmca'] = {'dmca'},<br />
['Template:Pp-pc'] = {action = 'autoreview', small = true},<br />
['Template:Pp-pc1'] = {action = 'autoreview', small = true},<br />
['Template:Pp-reset'] = {'reset'},<br />
['Template:Pp-semi-indef'] = {small = true},<br />
['Template:Pp-sock'] = {'sock'},<br />
['Template:Pp-template'] = {'template', small = true},<br />
['Template:Pp-upload'] = {action = 'upload'},<br />
['Template:Pp-usertalk'] = {'usertalk'},<br />
['Template:Pp-vandalism'] = {'vandalism'},<br />
},<br />
<br />
--------------------------------------------------------------------------------<br />
-- <br />
-- MESSAGES<br />
-- <br />
--------------------------------------------------------------------------------<br />
<br />
msg = {<br />
<br />
--------------------------------------------------------------------------------<br />
-- Intro blurb and intro fragment<br />
--------------------------------------------------------------------------------<br />
<br />
-- These messages specify what is produced by the ${INTROBLURB} and<br />
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the<br />
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use<br />
-- intro-blurb-noexpiry or intro-fragment-noexpiry.<br />
-- It is possible to use banner parameters in these messages.<br />
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',<br />
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',<br />
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',<br />
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',<br />
<br />
--------------------------------------------------------------------------------<br />
-- Tooltip blurb<br />
--------------------------------------------------------------------------------<br />
<br />
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.<br />
-- If the protection is temporary the tooltip-blurb-expiry message is used, and<br />
-- if not the tooltip-blurb-noexpiry message is used.<br />
-- It is possible to use banner parameters in these messages.<br />
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',<br />
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',<br />
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',<br />
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',<br />
<br />
--------------------------------------------------------------------------------<br />
-- Special explanation blurb<br />
--------------------------------------------------------------------------------<br />
<br />
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages<br />
-- in the MediaWiki namespace.<br />
-- It is possible to use banner parameters in this message.<br />
['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|'<br />
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'<br />
.. ' Please discuss any changes on the ${TALKPAGE}; you'<br />
.. ' may ${EDITREQUEST} to ask an'<br />
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'<br />
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'<br />
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'<br />
.. '|consensus]].',<br />
<br />
--------------------------------------------------------------------------------<br />
-- Protection log display values<br />
--------------------------------------------------------------------------------<br />
<br />
-- These messages determine the display values for the protection log link<br />
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.<br />
-- It is possible to use banner parameters in these messages.<br />
['protection-log-display'] = 'protection log',<br />
['pc-log-display'] = 'pending changes log',<br />
<br />
--------------------------------------------------------------------------------<br />
-- Current version display values<br />
--------------------------------------------------------------------------------<br />
<br />
-- These messages determine the display values for the page history link<br />
-- or the move log link produced by the ${CURRENTVERSION} parameter.<br />
-- It is possible to use banner parameters in these messages.<br />
['current-version-move-display'] = 'current title',<br />
['current-version-edit-display'] = 'current version',<br />
<br />
--------------------------------------------------------------------------------<br />
-- Talk page<br />
--------------------------------------------------------------------------------<br />
<br />
-- This message determines the display value of the talk page link produced<br />
-- with the ${TALKPAGE} parameter.<br />
-- It is possible to use banner parameters in this message.<br />
['talk-page-link-display'] = 'talk page',<br />
<br />
--------------------------------------------------------------------------------<br />
-- Edit requests<br />
--------------------------------------------------------------------------------<br />
<br />
-- This message determines the display value of the edit request link produced<br />
-- with the ${EDITREQUEST} parameter.<br />
-- It is possible to use banner parameters in this message.<br />
['edit-request-display'] = 'submit an edit request',<br />
<br />
--------------------------------------------------------------------------------<br />
-- Expiry date format<br />
--------------------------------------------------------------------------------<br />
<br />
-- This is the format for the blurb expiry date. It should be valid input for<br />
-- the first parameter of the #time parser function.<br />
['expiry-date-format'] = 'F j, Y "at" H:i e',<br />
<br />
--------------------------------------------------------------------------------<br />
-- Tracking categories<br />
--------------------------------------------------------------------------------<br />
<br />
-- These messages determine which tracking categories the module outputs.<br />
['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',<br />
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',<br />
<br />
--------------------------------------------------------------------------------<br />
-- Images<br />
--------------------------------------------------------------------------------<br />
<br />
-- These are images that are not defined by their protection action and protection level.<br />
['image-filename-indef'] = 'Full-protection-shackle.svg',<br />
['image-filename-default'] = 'Transparent.gif',<br />
<br />
--------------------------------------------------------------------------------<br />
-- End messages<br />
--------------------------------------------------------------------------------<br />
}<br />
<br />
--------------------------------------------------------------------------------<br />
-- End configuration<br />
--------------------------------------------------------------------------------<br />
}</div>Webadminhttps://www.nmnwiki.com/index.php?title=Module:Sidebar&diff=140Module:Sidebar2020-05-14T19:16:36Z<p>Webadmin: 1 revision imported</p>
<hr />
<div>--<br />
-- This module implements {{Sidebar}}<br />
--<br />
require('Module:No globals')<br />
<br />
local p = {}<br />
<br />
local getArgs = require('Module:Arguments').getArgs<br />
local navbar = require('Module:Navbar')._navbar<br />
<br />
local function trimAndAddAutomaticNewline(s)<br />
-- For compatibility with the original {{sidebar with collapsible lists}}<br />
-- implementation, which passed some parameters through {{#if}} to trim<br />
-- their whitespace. This also triggered the automatic newline behavior.<br />
-- ([[meta:Help:Newlines and spaces#Automatic newline]])<br />
s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1")<br />
if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then<br />
return '\n' .. s<br />
else<br />
return s<br />
end<br />
end<br />
<br />
local function hasSubgroup(s)<br />
if mw.ustring.find(s, 'vertical%-navbox%-subgroup') then<br />
return true<br />
else<br />
return false<br />
end<br />
end<br />
<br />
function p.sidebar(frame, args)<br />
if not args then<br />
args = getArgs(frame)<br />
end<br />
local root = mw.html.create()<br />
local child = args.child and mw.text.trim(args.child) == 'yes'<br />
<br />
root = root:tag('table')<br />
if not child then<br />
root <br />
:addClass('vertical-navbox')<br />
:addClass(args.wraplinks ~= 'true' and 'nowraplinks' or nil)<br />
:addClass(args.bodyclass or args.class)<br />
:css('float', args.float or 'right')<br />
:css('clear', (args.float == 'none' and 'both') or args.float or 'right')<br />
:css('width', args.width or '22.0em')<br />
:css('margin', args.float == 'left' and '0 1.0em 1.0em 0' or '0 0 1.0em 1.0em')<br />
:css('background', '#f9f9f9')<br />
:css('border', '1px solid #aaa')<br />
:css('padding', '0.2em')<br />
:css('border-spacing', '0.4em 0')<br />
:css('text-align', 'center')<br />
:css('line-height', '1.4em')<br />
:css('font-size', '88%')<br />
:cssText(args.bodystyle or args.style)<br />
<br />
if args.outertitle then<br />
root<br />
:tag('caption')<br />
:addClass(args.outertitleclass)<br />
:css('padding-bottom', '0.2em')<br />
:css('font-size', '125%')<br />
:css('line-height', '1.2em')<br />
:css('font-weight', 'bold')<br />
:cssText(args.outertitlestyle)<br />
:wikitext(args.outertitle)<br />
end<br />
<br />
if args.topimage then<br />
local imageCell = root:tag('tr'):tag('td')<br />
<br />
imageCell<br />
:addClass(args.topimageclass)<br />
:css('padding', '0.4em 0')<br />
:cssText(args.topimagestyle)<br />
:wikitext(args.topimage)<br />
<br />
if args.topcaption then<br />
imageCell<br />
:tag('div')<br />
:css('padding-top', '0.2em')<br />
:css('line-height', '1.2em')<br />
:cssText(args.topcaptionstyle)<br />
:wikitext(args.topcaption)<br />
end<br />
end<br />
<br />
if args.pretitle then<br />
root<br />
:tag('tr')<br />
:tag('td')<br />
:addClass(args.pretitleclass)<br />
:cssText(args.basestyle)<br />
:css('padding-top', args.topimage and '0.2em' or '0.4em')<br />
:css('line-height', '1.2em')<br />
:cssText(args.pretitlestyle)<br />
:wikitext(args.pretitle)<br />
end<br />
else<br />
root<br />
:addClass('vertical-navbox-subgroup')<br />
:css('width', '100%')<br />
:css('margin', '0px')<br />
:css('border-spacing', '0px')<br />
:addClass(args.bodyclass or args.class)<br />
:cssText(args.bodystyle or args.style)<br />
end<br />
<br />
if args.title then<br />
if child then<br />
root<br />
:wikitext(args.title)<br />
else<br />
root<br />
:tag('tr')<br />
:tag('th')<br />
:addClass(args.titleclass)<br />
:cssText(args.basestyle)<br />
:css('padding', '0.2em 0.4em 0.2em')<br />
:css('padding-top', args.pretitle and 0)<br />
:css('font-size', '145%')<br />
:css('line-height', '1.2em')<br />
:cssText(args.titlestyle)<br />
:wikitext(args.title)<br />
end<br />
end<br />
<br />
if args.image then<br />
local imageCell = root:tag('tr'):tag('td')<br />
<br />
imageCell<br />
:addClass(args.imageclass)<br />
:css('padding', '0.2em 0 0.4em')<br />
:cssText(args.imagestyle)<br />
:wikitext(args.image)<br />
<br />
if args.caption then<br />
imageCell<br />
:tag('div')<br />
:css('padding-top', '0.2em')<br />
:css('line-height', '1.2em')<br />
:cssText(args.captionstyle)<br />
:wikitext(args.caption)<br />
end<br />
end<br />
<br />
if args.above then<br />
root<br />
:tag('tr')<br />
:tag('td')<br />
:addClass(args.aboveclass)<br />
:css('padding', '0.3em 0.4em 0.3em')<br />
:css('font-weight', 'bold')<br />
:cssText(args.abovestyle)<br />
:newline() -- newline required for bullet-points to work<br />
:wikitext(args.above)<br />
end<br />
<br />
local rowNums = {}<br />
for k, v in pairs(args) do<br />
k = '' .. k<br />
local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$')<br />
if num then table.insert(rowNums, tonumber(num)) end<br />
end<br />
table.sort(rowNums)<br />
-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 and content3 are specified)<br />
for i = #rowNums, 1, -1 do<br />
if rowNums[i] == rowNums[i - 1] then<br />
table.remove(rowNums, i)<br />
end<br />
end<br />
<br />
for i, num in ipairs(rowNums) do<br />
local heading = args['heading' .. num]<br />
if heading then<br />
root<br />
:tag('tr')<br />
:tag('th')<br />
:addClass(args.headingclass)<br />
:css('padding', '0.1em')<br />
:cssText(args.basestyle)<br />
:cssText(args.headingstyle)<br />
:cssText(args['heading' .. num .. 'style'])<br />
:newline()<br />
:wikitext(heading)<br />
end<br />
<br />
local content = args['content' .. num]<br />
if content then<br />
root<br />
:tag('tr')<br />
:tag('td')<br />
:addClass(args.contentclass)<br />
:css('padding', hasSubgroup(content) and '0.1em 0 0.2em' or '0 0.1em 0.4em')<br />
:cssText(args.contentstyle)<br />
:cssText(args['content' .. num .. 'style'])<br />
:newline()<br />
:wikitext(content)<br />
:done()<br />
:newline() -- Without a linebreak after the </td>, a nested list like "* {{hlist| ...}}" doesn't parse correctly.<br />
end<br />
end<br />
<br />
if args.below then<br />
root<br />
:tag('tr')<br />
:tag('td')<br />
:addClass(args.belowclass)<br />
:css('padding', '0.3em 0.4em 0.3em')<br />
:css('font-weight', 'bold')<br />
:cssText(args.belowstyle)<br />
:newline()<br />
:wikitext(args.below)<br />
end<br />
<br />
if not child then<br />
local navbarArg = args.navbar or args.tnavbar<br />
if navbarArg ~= 'none' and navbarArg ~= 'off' and (args.name or frame:getParent():getTitle():gsub('/sandbox$', '') ~= 'Template:Sidebar') then<br />
root<br />
:tag('tr')<br />
:tag('td')<br />
:css('text-align', 'right')<br />
:css('font-size', '115%')<br />
:cssText(args.navbarstyle or args.tnavbarstyle)<br />
:wikitext(navbar{<br />
args.name,<br />
mini = 1,<br />
fontstyle = args.navbarfontstyle or args.tnavbarfontstyle<br />
})<br />
end<br />
end<br />
<br />
return tostring(root) .. (child and '[[Category:Pages using sidebar with the child parameter]]' or '')<br />
end<br />
<br />
function p.collapsible(frame)<br />
local args = getArgs(frame)<br />
<br />
args.abovestyle = 'border-top: 1px solid #aaa; border-bottom: 1px solid #aaa;' .. (args.abovestyle or '')<br />
args.belowstyle = 'border-top: 1px solid #aaa; border-bottom: 1px solid #aaa;' .. (args.belowstyle or '')<br />
args.navbarstyle = 'padding-top: 0.6em;' .. (args.navbarstyle or args.tnavbarstyle or '')<br />
if not args.name and frame:getParent():getTitle():gsub('/sandbox$', '') == 'Template:Sidebar with collapsible lists' then<br />
args.navbar = 'none'<br />
end<br />
<br />
local contentArgs = {}<br />
<br />
for k, v in pairs(args) do<br />
local num = string.match(k, '^list(%d+)$')<br />
if num then<br />
local expand = args.expanded and (args.expanded == 'all' or args.expanded == args['list' .. num .. 'name'])<br />
<br />
local row = mw.html.create('div')<br />
row<br />
:addClass('NavFrame')<br />
:addClass((not expand) and 'collapsed' or nil)<br />
:css('border', 'none')<br />
:css('padding', 0)<br />
:cssText(args.listframestyle)<br />
:cssText(args['list' .. num .. 'framestyle'])<br />
:tag('div')<br />
:addClass('NavHead')<br />
:addClass(args.listtitleclass)<br />
:css('font-size', '105%')<br />
:css('background', 'transparent')<br />
:css('text-align', 'left')<br />
:cssText(args.basestyle)<br />
:cssText(args.listtitlestyle)<br />
:cssText(args['list' .. num .. 'titlestyle'])<br />
:wikitext(trimAndAddAutomaticNewline(args['list' .. num .. 'title'] or 'List'))<br />
:done()<br />
:tag('div')<br />
:addClass('NavContent')<br />
:addClass(args.listclass)<br />
:addClass(args['list' .. num .. 'class'])<br />
:css('font-size', '105%')<br />
:css('padding', '0.2em 0 0.4em')<br />
:css('text-align', 'center')<br />
:cssText(args.liststyle)<br />
:cssText(args['list' .. num .. 'style'])<br />
:wikitext(trimAndAddAutomaticNewline(args['list' .. num]))<br />
<br />
contentArgs['content' .. num] = tostring(row)<br />
end<br />
end<br />
<br />
for k, v in pairs(contentArgs) do<br />
args[k] = v<br />
end<br />
<br />
return p.sidebar(frame, args)<br />
end<br />
<br />
return p</div>Webadminhttps://www.nmnwiki.com/index.php?title=Module:String&diff=142Module:String2020-05-14T19:16:36Z<p>Webadmin: 1 revision imported</p>
<hr />
<div>--[[<br />
<br />
This module is intended to provide access to basic string functions.<br />
<br />
Most of the functions provided here can be invoked with named parameters,<br />
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will<br />
automatically remove any leading or trailing whitespace from the parameter.<br />
Depending on the intended use, it may be advantageous to either preserve or<br />
remove such whitespace.<br />
<br />
Global options<br />
ignore_errors: If set to 'true' or 1, any error condition will result in<br />
an empty string being returned rather than an error message.<br />
<br />
error_category: If an error occurs, specifies the name of a category to<br />
include with the error message. The default category is<br />
[Category:Errors reported by Module String].<br />
<br />
no_category: If set to 'true' or 1, no category will be added if an error<br />
is generated.<br />
<br />
Unit tests for this module are available at Module:String/tests.<br />
]]<br />
<br />
local str = {}<br />
<br />
--[[<br />
len<br />
<br />
This function returns the length of the target string.<br />
<br />
Usage:<br />
{{#invoke:String|len|target_string|}}<br />
OR<br />
{{#invoke:String|len|s=target_string}}<br />
<br />
Parameters<br />
s: The string whose length to report<br />
<br />
If invoked using named parameters, Mediawiki will automatically remove any leading or<br />
trailing whitespace from the target string.<br />
]]<br />
function str.len( frame )<br />
local new_args = str._getParameters( frame.args, {'s'} )<br />
local s = new_args['s'] or ''<br />
return mw.ustring.len( s )<br />
end<br />
<br />
--[[<br />
sub<br />
<br />
This function returns a substring of the target string at specified indices.<br />
<br />
Usage:<br />
{{#invoke:String|sub|target_string|start_index|end_index}}<br />
OR<br />
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}<br />
<br />
Parameters<br />
s: The string to return a subset of<br />
i: The fist index of the substring to return, defaults to 1.<br />
j: The last index of the string to return, defaults to the last character.<br />
<br />
The first character of the string is assigned an index of 1. If either i or j<br />
is a negative value, it is interpreted the same as selecting a character by<br />
counting from the end of the string. Hence, a value of -1 is the same as<br />
selecting the last character of the string.<br />
<br />
If the requested indices are out of range for the given string, an error is<br />
reported.<br />
]]<br />
function str.sub( frame )<br />
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )<br />
local s = new_args['s'] or ''<br />
local i = tonumber( new_args['i'] ) or 1<br />
local j = tonumber( new_args['j'] ) or -1<br />
<br />
local len = mw.ustring.len( s )<br />
<br />
-- Convert negatives for range checking<br />
if i < 0 then<br />
i = len + i + 1<br />
end<br />
if j < 0 then<br />
j = len + j + 1<br />
end<br />
<br />
if i > len or j > len or i < 1 or j < 1 then<br />
return str._error( 'String subset index out of range' )<br />
end<br />
if j < i then<br />
return str._error( 'String subset indices out of order' )<br />
end<br />
<br />
return mw.ustring.sub( s, i, j )<br />
end<br />
<br />
--[[<br />
This function implements that features of {{str sub old}} and is kept in order<br />
to maintain these older templates.<br />
]]<br />
function str.sublength( frame )<br />
local i = tonumber( frame.args.i ) or 0<br />
local len = tonumber( frame.args.len )<br />
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )<br />
end<br />
<br />
--[[<br />
match<br />
<br />
This function returns a substring from the source string that matches a<br />
specified pattern.<br />
<br />
Usage:<br />
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}<br />
OR<br />
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index<br />
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}<br />
<br />
Parameters<br />
s: The string to search<br />
pattern: The pattern or string to find within the string<br />
start: The index within the source string to start the search. The first<br />
character of the string has index 1. Defaults to 1.<br />
match: In some cases it may be possible to make multiple matches on a single<br />
string. This specifies which match to return, where the first match is<br />
match= 1. If a negative number is specified then a match is returned<br />
counting from the last match. Hence match = -1 is the same as requesting<br />
the last match. Defaults to 1.<br />
plain: A flag indicating that the pattern should be understood as plain<br />
text. Defaults to false.<br />
nomatch: If no match is found, output the "nomatch" value rather than an error.<br />
<br />
If invoked using named parameters, Mediawiki will automatically remove any leading or<br />
trailing whitespace from each string. In some circumstances this is desirable, in<br />
other cases one may want to preserve the whitespace.<br />
<br />
If the match_number or start_index are out of range for the string being queried, then<br />
this function generates an error. An error is also generated if no match is found.<br />
If one adds the parameter ignore_errors=true, then the error will be suppressed and<br />
an empty string will be returned on any failure.<br />
<br />
For information on constructing Lua patterns, a form of [regular expression], see:<br />
<br />
* http://www.lua.org/manual/5.1/manual.html#5.4.1<br />
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns<br />
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns<br />
<br />
]]<br />
-- This sub-routine is exported for use in other modules<br />
function str._match( s, pattern, start, match_index, plain_flag, nomatch )<br />
if s == '' then<br />
return str._error( 'Target string is empty' )<br />
end<br />
if pattern == '' then<br />
return str._error( 'Pattern string is empty' )<br />
end<br />
start = tonumber(start) or 1<br />
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then<br />
return str._error( 'Requested start is out of range' )<br />
end<br />
if match_index == 0 then<br />
return str._error( 'Match index is out of range' )<br />
end<br />
if plain_flag then<br />
pattern = str._escapePattern( pattern )<br />
end<br />
<br />
local result<br />
if match_index == 1 then<br />
-- Find first match is simple case<br />
result = mw.ustring.match( s, pattern, start )<br />
else<br />
if start > 1 then<br />
s = mw.ustring.sub( s, start )<br />
end<br />
<br />
local iterator = mw.ustring.gmatch(s, pattern)<br />
if match_index > 0 then<br />
-- Forward search<br />
for w in iterator do<br />
match_index = match_index - 1<br />
if match_index == 0 then<br />
result = w<br />
break<br />
end<br />
end<br />
else<br />
-- Reverse search<br />
local result_table = {}<br />
local count = 1<br />
for w in iterator do<br />
result_table[count] = w<br />
count = count + 1<br />
end<br />
<br />
result = result_table[ count + match_index ]<br />
end<br />
end<br />
<br />
if result == nil then<br />
if nomatch == nil then<br />
return str._error( 'Match not found' )<br />
else<br />
return nomatch<br />
end<br />
else<br />
return result<br />
end<br />
end<br />
-- This is the entry point for #invoke:String|match<br />
function str.match( frame )<br />
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )<br />
local s = new_args['s'] or ''<br />
local start = tonumber( new_args['start'] ) or 1<br />
local plain_flag = str._getBoolean( new_args['plain'] or false )<br />
local pattern = new_args['pattern'] or ''<br />
local match_index = math.floor( tonumber(new_args['match']) or 1 )<br />
local nomatch = new_args['nomatch']<br />
<br />
return str._match( s, pattern, start, match_index, plain_flag, nomatch )<br />
end<br />
<br />
--[[<br />
pos<br />
<br />
This function returns a single character from the target string at position pos.<br />
<br />
Usage:<br />
{{#invoke:String|pos|target_string|index_value}}<br />
OR<br />
{{#invoke:String|pos|target=target_string|pos=index_value}}<br />
<br />
Parameters<br />
target: The string to search<br />
pos: The index for the character to return<br />
<br />
If invoked using named parameters, Mediawiki will automatically remove any leading or<br />
trailing whitespace from the target string. In some circumstances this is desirable, in<br />
other cases one may want to preserve the whitespace.<br />
<br />
The first character has an index value of 1.<br />
<br />
If one requests a negative value, this function will select a character by counting backwards<br />
from the end of the string. In other words pos = -1 is the same as asking for the last character.<br />
<br />
A requested value of zero, or a value greater than the length of the string returns an error.<br />
]]<br />
function str.pos( frame )<br />
local new_args = str._getParameters( frame.args, {'target', 'pos'} )<br />
local target_str = new_args['target'] or ''<br />
local pos = tonumber( new_args['pos'] ) or 0<br />
<br />
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then<br />
return str._error( 'String index out of range' )<br />
end<br />
<br />
return mw.ustring.sub( target_str, pos, pos )<br />
end<br />
<br />
--[[<br />
str_find<br />
<br />
This function duplicates the behavior of {{str_find}}, including all of its quirks.<br />
This is provided in order to support existing templates, but is NOT RECOMMENDED for<br />
new code and templates. New code is recommended to use the "find" function instead.<br />
<br />
Returns the first index in "source" that is a match to "target". Indexing is 1-based,<br />
and the function returns -1 if the "target" string is not present in "source".<br />
<br />
Important Note: If the "target" string is empty / missing, this function returns a<br />
value of "1", which is generally unexpected behavior, and must be accounted for<br />
separatetly.<br />
]]<br />
function str.str_find( frame )<br />
local new_args = str._getParameters( frame.args, {'source', 'target'} )<br />
local source_str = new_args['source'] or ''<br />
local target_str = new_args['target'] or ''<br />
<br />
if target_str == '' then<br />
return 1<br />
end<br />
<br />
local start = mw.ustring.find( source_str, target_str, 1, true )<br />
if start == nil then<br />
start = -1<br />
end<br />
<br />
return start<br />
end<br />
<br />
--[[<br />
find<br />
<br />
This function allows one to search for a target string or pattern within another<br />
string.<br />
<br />
Usage:<br />
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}<br />
OR<br />
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}<br />
<br />
Parameters<br />
source: The string to search<br />
target: The string or pattern to find within source<br />
start: The index within the source string to start the search, defaults to 1<br />
plain: Boolean flag indicating that target should be understood as plain<br />
text and not as a Lua style regular expression, defaults to true<br />
<br />
If invoked using named parameters, Mediawiki will automatically remove any leading or<br />
trailing whitespace from the parameter. In some circumstances this is desirable, in<br />
other cases one may want to preserve the whitespace.<br />
<br />
This function returns the first index >= "start" where "target" can be found<br />
within "source". Indices are 1-based. If "target" is not found, then this<br />
function returns 0. If either "source" or "target" are missing / empty, this<br />
function also returns 0.<br />
<br />
This function should be safe for UTF-8 strings.<br />
]]<br />
function str.find( frame )<br />
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )<br />
local source_str = new_args['source'] or ''<br />
local pattern = new_args['target'] or ''<br />
local start_pos = tonumber(new_args['start']) or 1<br />
local plain = new_args['plain'] or true<br />
<br />
if source_str == '' or pattern == '' then<br />
return 0<br />
end<br />
<br />
plain = str._getBoolean( plain )<br />
<br />
local start = mw.ustring.find( source_str, pattern, start_pos, plain )<br />
if start == nil then<br />
start = 0<br />
end<br />
<br />
return start<br />
end<br />
<br />
--[[<br />
replace<br />
<br />
This function allows one to replace a target string or pattern within another<br />
string.<br />
<br />
Usage:<br />
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}<br />
OR<br />
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|<br />
count=replacement_count|plain=plain_flag}}<br />
<br />
Parameters<br />
source: The string to search<br />
pattern: The string or pattern to find within source<br />
replace: The replacement text<br />
count: The number of occurences to replace, defaults to all.<br />
plain: Boolean flag indicating that pattern should be understood as plain<br />
text and not as a Lua style regular expression, defaults to true<br />
]]<br />
function str.replace( frame )<br />
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )<br />
local source_str = new_args['source'] or ''<br />
local pattern = new_args['pattern'] or ''<br />
local replace = new_args['replace'] or ''<br />
local count = tonumber( new_args['count'] )<br />
local plain = new_args['plain'] or true<br />
<br />
if source_str == '' or pattern == '' then<br />
return source_str<br />
end<br />
plain = str._getBoolean( plain )<br />
<br />
if plain then<br />
pattern = str._escapePattern( pattern )<br />
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.<br />
end<br />
<br />
local result<br />
<br />
if count ~= nil then<br />
result = mw.ustring.gsub( source_str, pattern, replace, count )<br />
else<br />
result = mw.ustring.gsub( source_str, pattern, replace )<br />
end<br />
<br />
return result<br />
end<br />
<br />
--[[<br />
simple function to pipe string.rep to templates.<br />
]]<br />
function str.rep( frame )<br />
local repetitions = tonumber( frame.args[2] )<br />
if not repetitions then<br />
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )<br />
end<br />
return string.rep( frame.args[1] or '', repetitions )<br />
end<br />
<br />
--[[<br />
escapePattern<br />
<br />
This function escapes special characters from a Lua string pattern. See [1]<br />
for details on how patterns work.<br />
<br />
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns<br />
<br />
Usage:<br />
{{#invoke:String|escapePattern|pattern_string}}<br />
<br />
Parameters<br />
pattern_string: The pattern string to escape.<br />
]]<br />
function str.escapePattern( frame )<br />
local pattern_str = frame.args[1]<br />
if not pattern_str then<br />
return str._error( 'No pattern string specified' )<br />
end<br />
local result = str._escapePattern( pattern_str )<br />
return result<br />
end<br />
<br />
--[[<br />
count<br />
This function counts the number of occurrences of one string in another.<br />
]]<br />
function str.count(frame)<br />
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})<br />
local source = args.source or ''<br />
local pattern = args.pattern or ''<br />
local plain = str._getBoolean(args.plain or true)<br />
if plain then<br />
pattern = str._escapePattern(pattern)<br />
end<br />
local _, count = mw.ustring.gsub(source, pattern, '')<br />
return count<br />
end<br />
<br />
--[[<br />
endswith<br />
This function determines whether a string ends with another string.<br />
]]<br />
function str.endswith(frame)<br />
local args = str._getParameters(frame.args, {'source', 'pattern'})<br />
local source = args.source or ''<br />
local pattern = args.pattern or ''<br />
if pattern == '' then<br />
-- All strings end with the empty string.<br />
return "yes"<br />
end<br />
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then<br />
return "yes"<br />
else<br />
return ""<br />
end<br />
end<br />
<br />
--[[<br />
join<br />
<br />
Join all non empty arguments together; the first argument is the separator.<br />
Usage:<br />
{{#invoke:String|join|sep|one|two|three}}<br />
]]<br />
function str.join(frame)<br />
local args = {}<br />
local sep<br />
for _, v in ipairs( frame.args ) do<br />
if sep then<br />
if v ~= '' then<br />
table.insert(args, v)<br />
end<br />
else<br />
sep = v<br />
end<br />
end<br />
return table.concat( args, sep or '' )<br />
end<br />
<br />
--[[<br />
Helper function that populates the argument list given that user may need to use a mix of<br />
named and unnamed parameters. This is relevant because named parameters are not<br />
identical to unnamed parameters due to string trimming, and when dealing with strings<br />
we sometimes want to either preserve or remove that whitespace depending on the application.<br />
]]<br />
function str._getParameters( frame_args, arg_list )<br />
local new_args = {}<br />
local index = 1<br />
local value<br />
<br />
for _, arg in ipairs( arg_list ) do<br />
value = frame_args[arg]<br />
if value == nil then<br />
value = frame_args[index]<br />
index = index + 1<br />
end<br />
new_args[arg] = value<br />
end<br />
<br />
return new_args<br />
end<br />
<br />
--[[<br />
Helper function to handle error messages.<br />
]]<br />
function str._error( error_str )<br />
local frame = mw.getCurrentFrame()<br />
local error_category = frame.args.error_category or 'Errors reported by Module String'<br />
local ignore_errors = frame.args.ignore_errors or false<br />
local no_category = frame.args.no_category or false<br />
<br />
if str._getBoolean(ignore_errors) then<br />
return ''<br />
end<br />
<br />
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'<br />
if error_category ~= '' and not str._getBoolean( no_category ) then<br />
error_str = '[[Category:' .. error_category .. ']]' .. error_str<br />
end<br />
<br />
return error_str<br />
end<br />
<br />
--[[<br />
Helper Function to interpret boolean strings<br />
]]<br />
function str._getBoolean( boolean_str )<br />
local boolean_value<br />
<br />
if type( boolean_str ) == 'string' then<br />
boolean_str = boolean_str:lower()<br />
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'<br />
or boolean_str == '' then<br />
boolean_value = false<br />
else<br />
boolean_value = true<br />
end<br />
elseif type( boolean_str ) == 'boolean' then<br />
boolean_value = boolean_str<br />
else<br />
error( 'No boolean value found' )<br />
end<br />
return boolean_value<br />
end<br />
<br />
--[[<br />
Helper function that escapes all pattern characters so that they will be treated<br />
as plain text.<br />
]]<br />
function str._escapePattern( pattern_str )<br />
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )<br />
end<br />
<br />
return str</div>Webadminhttps://www.nmnwiki.com/index.php?title=Module:Parameter_names_example&diff=134Module:Parameter names example2020-05-14T19:16:35Z<p>Webadmin: 1 revision imported</p>
<hr />
<div>-- This module implements {{parameter names example}}.<br />
<br />
local p = {}<br />
<br />
local function makeParam(s)<br />
local lb = '&#123;'<br />
local rb = '&#125;'<br />
return lb:rep(3) .. s .. rb:rep(3)<br />
end<br />
<br />
local function italicize(s)<br />
return "''" .. s .. "''"<br />
end<br />
<br />
local function plain(s)<br />
return s<br />
end<br />
<br />
function p._main(args, frame)<br />
-- Find how we want to format the arguments to the template.<br />
local formatFunc<br />
if args._display == 'italics' or args._display == 'italic' then<br />
formatFunc = italicize<br />
elseif args._display == 'plain' then<br />
formatFunc = plain<br />
else<br />
formatFunc = makeParam<br />
end<br />
<br />
-- Build the table of template arguments.<br />
local targs = {}<br />
for k, v in pairs(args) do<br />
if type(k) == 'number' then<br />
targs[v] = formatFunc(v)<br />
elseif not k:find('^_') then<br />
targs[k] = v<br />
end<br />
end<br />
targs['nocat'] = 'yes';<br />
targs['categories'] = 'no';<br />
targs['demo'] = 'yes';<br />
<br />
-- Find the template name.<br />
local template<br />
if args._template then<br />
template = args._template<br />
else<br />
local currentTitle = mw.title.getCurrentTitle()<br />
if currentTitle.prefixedText:find('/sandbox$') then<br />
template = currentTitle.prefixedText<br />
else<br />
template = currentTitle.basePageTitle.prefixedText<br />
end<br />
end<br />
<br />
-- Call the template with the arguments.<br />
frame = frame or mw.getCurrentFrame()<br />
local success, result = pcall(<br />
frame.expandTemplate,<br />
frame,<br />
{title = template, args = targs}<br />
)<br />
if success then<br />
return result<br />
else<br />
return ''<br />
end<br />
end<br />
<br />
function p.main(frame)<br />
local args = require('Module:Arguments').getArgs(frame, {<br />
wrappers = 'Template:Parameter names example'<br />
})<br />
return p._main(args, frame)<br />
end<br />
<br />
return p</div>Webadmin